﻿2026-06-22T01:34:20.1156700Z ##[group]Run ./traceable-reqs check --json
2026-06-22T01:34:20.1157029Z [36;1m./traceable-reqs check --json[0m
2026-06-22T01:34:20.1169733Z shell: /usr/bin/bash -e {0}
2026-06-22T01:34:20.1169956Z ##[endgroup]
2026-06-22T01:34:20.1889848Z {
2026-06-22T01:34:20.1890344Z   "schemaVersion": 1,
2026-06-22T01:34:20.1890824Z   "summary": {
2026-06-22T01:34:20.1891073Z     "requirementCount": 280,
2026-06-22T01:34:20.1891330Z     "completeCount": 280,
2026-06-22T01:34:20.1891574Z     "incompleteCount": 0,
2026-06-22T01:34:20.1891811Z     "findingCount": 0
2026-06-22T01:34:20.1892054Z   },
2026-06-22T01:34:20.1892369Z   "requirements": [
2026-06-22T01:34:20.1892705Z     {
2026-06-22T01:34:20.1893034Z       "id": "REQ-API-1",
2026-06-22T01:34:20.1893544Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-22T01:34:20.1894112Z       "requiredStages": [
2026-06-22T01:34:20.1894522Z         "impl",
2026-06-22T01:34:20.1894832Z         "unit",
2026-06-22T01:34:20.1895138Z         "int"
2026-06-22T01:34:20.1895497Z       ],
2026-06-22T01:34:20.1895782Z       "stages": {
2026-06-22T01:34:20.1896102Z         "doc": {
2026-06-22T01:34:20.1896426Z           "complete": false,
2026-06-22T01:34:20.1896792Z           "evidence": []
2026-06-22T01:34:20.1897121Z         },
2026-06-22T01:34:20.1897399Z         "impl": {
2026-06-22T01:34:20.1897723Z           "complete": true,
2026-06-22T01:34:20.1898092Z           "evidence": [
2026-06-22T01:34:20.1898430Z             {
2026-06-22T01:34:20.1898773Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.1899326Z               "line": 15
2026-06-22T01:34:20.1899660Z             }
2026-06-22T01:34:20.1899951Z           ]
2026-06-22T01:34:20.1900257Z         },
2026-06-22T01:34:20.1900548Z         "int": {
2026-06-22T01:34:20.1900798Z           "complete": true,
2026-06-22T01:34:20.1901079Z           "evidence": [
2026-06-22T01:34:20.1901360Z             {
2026-06-22T01:34:20.1901657Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.1902032Z               "line": 13
2026-06-22T01:34:20.1902301Z             }
2026-06-22T01:34:20.1902544Z           ]
2026-06-22T01:34:20.1902778Z         },
2026-06-22T01:34:20.1903019Z         "unit": {
2026-06-22T01:34:20.1903274Z           "complete": true,
2026-06-22T01:34:20.1903565Z           "evidence": [
2026-06-22T01:34:20.1903832Z             {
2026-06-22T01:34:20.1904105Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.1904457Z               "line": 717
2026-06-22T01:34:20.1904720Z             },
2026-06-22T01:34:20.1904952Z             {
2026-06-22T01:34:20.1905219Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.1905563Z               "line": 804
2026-06-22T01:34:20.1905834Z             }
2026-06-22T01:34:20.1906071Z           ]
2026-06-22T01:34:20.1906304Z         }
2026-06-22T01:34:20.1906541Z       }
2026-06-22T01:34:20.1906775Z     },
2026-06-22T01:34:20.1907014Z     {
2026-06-22T01:34:20.1907258Z       "id": "REQ-API-2",
2026-06-22T01:34:20.1907719Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-22T01:34:20.1908255Z       "requiredStages": [
2026-06-22T01:34:20.1908534Z         "impl",
2026-06-22T01:34:20.1908789Z         "unit",
2026-06-22T01:34:20.1909128Z         "int"
2026-06-22T01:34:20.1909385Z       ],
2026-06-22T01:34:20.1909633Z       "stages": {
2026-06-22T01:34:20.1909877Z         "doc": {
2026-06-22T01:34:20.1910145Z           "complete": false,
2026-06-22T01:34:20.1910450Z           "evidence": []
2026-06-22T01:34:20.1910726Z         },
2026-06-22T01:34:20.1910978Z         "impl": {
2026-06-22T01:34:20.1911244Z           "complete": true,
2026-06-22T01:34:20.1911540Z           "evidence": [
2026-06-22T01:34:20.1911803Z             {
2026-06-22T01:34:20.1912098Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:34:20.1912866Z               "line": 17
2026-06-22T01:34:20.1913141Z             },
2026-06-22T01:34:20.1913386Z             {
2026-06-22T01:34:20.1913910Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.1914292Z               "line": 20
2026-06-22T01:34:20.1914563Z             },
2026-06-22T01:34:20.1914807Z             {
2026-06-22T01:34:20.1915084Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.1915432Z               "line": 142
2026-06-22T01:34:20.1915712Z             },
2026-06-22T01:34:20.1915962Z             {
2026-06-22T01:34:20.1916244Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1916622Z               "line": 24
2026-06-22T01:34:20.1916902Z             },
2026-06-22T01:34:20.1917145Z             {
2026-06-22T01:34:20.1917421Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1917779Z               "line": 41
2026-06-22T01:34:20.1918051Z             },
2026-06-22T01:34:20.1918289Z             {
2026-06-22T01:34:20.1918589Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1919065Z               "line": 213
2026-06-22T01:34:20.1919349Z             },
2026-06-22T01:34:20.1919593Z             {
2026-06-22T01:34:20.1919879Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1920227Z               "line": 255
2026-06-22T01:34:20.1920499Z             },
2026-06-22T01:34:20.1920733Z             {
2026-06-22T01:34:20.1921039Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1921391Z               "line": 334
2026-06-22T01:34:20.1921664Z             },
2026-06-22T01:34:20.1921894Z             {
2026-06-22T01:34:20.1922190Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1922552Z               "line": 397
2026-06-22T01:34:20.1922824Z             },
2026-06-22T01:34:20.1923067Z             {
2026-06-22T01:34:20.1923354Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1923716Z               "line": 436
2026-06-22T01:34:20.1923993Z             },
2026-06-22T01:34:20.1924234Z             {
2026-06-22T01:34:20.1924524Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.1924881Z               "line": 17
2026-06-22T01:34:20.1925148Z             },
2026-06-22T01:34:20.1925395Z             {
2026-06-22T01:34:20.1925700Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.1926068Z               "line": 30
2026-06-22T01:34:20.1926354Z             },
2026-06-22T01:34:20.1926601Z             {
2026-06-22T01:34:20.1926847Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.1927088Z               "line": 63
2026-06-22T01:34:20.1927323Z             },
2026-06-22T01:34:20.1927586Z             {
2026-06-22T01:34:20.1927873Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.1928239Z               "line": 77
2026-06-22T01:34:20.1928516Z             }
2026-06-22T01:34:20.1928755Z           ]
2026-06-22T01:34:20.1929065Z         },
2026-06-22T01:34:20.1929309Z         "int": {
2026-06-22T01:34:20.1929577Z           "complete": true,
2026-06-22T01:34:20.1929881Z           "evidence": [
2026-06-22T01:34:20.1930157Z             {
2026-06-22T01:34:20.1930462Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.1930839Z               "line": 14
2026-06-22T01:34:20.1931116Z             },
2026-06-22T01:34:20.1931373Z             {
2026-06-22T01:34:20.1931683Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.1932055Z               "line": 187
2026-06-22T01:34:20.1932336Z             }
2026-06-22T01:34:20.1932579Z           ]
2026-06-22T01:34:20.1932822Z         },
2026-06-22T01:34:20.1933070Z         "unit": {
2026-06-22T01:34:20.1933332Z           "complete": true,
2026-06-22T01:34:20.1933637Z           "evidence": [
2026-06-22T01:34:20.1933909Z             {
2026-06-22T01:34:20.1934210Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:34:20.1934757Z               "line": 82
2026-06-22T01:34:20.1935035Z             },
2026-06-22T01:34:20.1935307Z             {
2026-06-22T01:34:20.1936028Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.1936270Z               "line": 279
2026-06-22T01:34:20.1936452Z             },
2026-06-22T01:34:20.1936618Z             {
2026-06-22T01:34:20.1936814Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1937058Z               "line": 709
2026-06-22T01:34:20.1937243Z             },
2026-06-22T01:34:20.1937421Z             {
2026-06-22T01:34:20.1937604Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1937850Z               "line": 720
2026-06-22T01:34:20.1938037Z             },
2026-06-22T01:34:20.1938198Z             {
2026-06-22T01:34:20.1938414Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1938657Z               "line": 873
2026-06-22T01:34:20.1938837Z             },
2026-06-22T01:34:20.1939061Z             {
2026-06-22T01:34:20.1939272Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1939500Z               "line": 919
2026-06-22T01:34:20.1939686Z             },
2026-06-22T01:34:20.1939844Z             {
2026-06-22T01:34:20.1940029Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.1940267Z               "line": 143
2026-06-22T01:34:20.1940446Z             },
2026-06-22T01:34:20.1940608Z             {
2026-06-22T01:34:20.1940808Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.1941051Z               "line": 187
2026-06-22T01:34:20.1941224Z             }
2026-06-22T01:34:20.1941385Z           ]
2026-06-22T01:34:20.1941553Z         }
2026-06-22T01:34:20.1941719Z       }
2026-06-22T01:34:20.1941882Z     },
2026-06-22T01:34:20.1942038Z     {
2026-06-22T01:34:20.1942210Z       "id": "REQ-API-3",
2026-06-22T01:34:20.1942454Z       "title": "commune/signoff are file-drops, not commands",
2026-06-22T01:34:20.1942736Z       "requiredStages": [
2026-06-22T01:34:20.1942929Z         "impl",
2026-06-22T01:34:20.1943101Z         "unit",
2026-06-22T01:34:20.1943272Z         "int"
2026-06-22T01:34:20.1943440Z       ],
2026-06-22T01:34:20.1943601Z       "stages": {
2026-06-22T01:34:20.1943869Z         "doc": {
2026-06-22T01:34:20.1944155Z           "complete": false,
2026-06-22T01:34:20.1944441Z           "evidence": []
2026-06-22T01:34:20.1944893Z         },
2026-06-22T01:34:20.1945141Z         "impl": {
2026-06-22T01:34:20.1945458Z           "complete": true,
2026-06-22T01:34:20.1945749Z           "evidence": [
2026-06-22T01:34:20.1945997Z             {
2026-06-22T01:34:20.1946345Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.1946717Z               "line": 27
2026-06-22T01:34:20.1947041Z             },
2026-06-22T01:34:20.1947289Z             {
2026-06-22T01:34:20.1947557Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1947957Z               "line": 566
2026-06-22T01:34:20.1948218Z             }
2026-06-22T01:34:20.1948506Z           ]
2026-06-22T01:34:20.1948772Z         },
2026-06-22T01:34:20.1949126Z         "int": {
2026-06-22T01:34:20.1975211Z           "complete": true,
2026-06-22T01:34:20.1975677Z           "evidence": [
2026-06-22T01:34:20.1975944Z             {
2026-06-22T01:34:20.1976231Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.1976612Z               "line": 261
2026-06-22T01:34:20.1976883Z             }
2026-06-22T01:34:20.1977116Z           ]
2026-06-22T01:34:20.1977362Z         },
2026-06-22T01:34:20.1977605Z         "unit": {
2026-06-22T01:34:20.1977867Z           "complete": true,
2026-06-22T01:34:20.1978163Z           "evidence": [
2026-06-22T01:34:20.1978440Z             {
2026-06-22T01:34:20.1978740Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.1979213Z               "line": 280
2026-06-22T01:34:20.1979499Z             },
2026-06-22T01:34:20.1979745Z             {
2026-06-22T01:34:20.1980062Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.1980673Z               "line": 948
2026-06-22T01:34:20.1980959Z             }
2026-06-22T01:34:20.1981336Z           ]
2026-06-22T01:34:20.1981574Z         }
2026-06-22T01:34:20.1981809Z       }
2026-06-22T01:34:20.1982041Z     },
2026-06-22T01:34:20.1982274Z     {
2026-06-22T01:34:20.1982531Z       "id": "REQ-API-4",
2026-06-22T01:34:20.1985308Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-22T01:34:20.1987538Z       "requiredStages": [
2026-06-22T01:34:20.1987840Z         "doc",
2026-06-22T01:34:20.1988108Z         "impl",
2026-06-22T01:34:20.1988371Z         "unit"
2026-06-22T01:34:20.1988614Z       ],
2026-06-22T01:34:20.1988882Z       "stages": {
2026-06-22T01:34:20.1989225Z         "doc": {
2026-06-22T01:34:20.1989497Z           "complete": true,
2026-06-22T01:34:20.1989788Z           "evidence": [
2026-06-22T01:34:20.1990078Z             {
2026-06-22T01:34:20.1990362Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.1990684Z               "line": 149
2026-06-22T01:34:20.1990975Z             }
2026-06-22T01:34:20.1991219Z           ]
2026-06-22T01:34:20.1991449Z         },
2026-06-22T01:34:20.1991681Z         "impl": {
2026-06-22T01:34:20.1991953Z           "complete": true,
2026-06-22T01:34:20.1992239Z           "evidence": [
2026-06-22T01:34:20.1992520Z             {
2026-06-22T01:34:20.1992816Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.1993175Z               "line": 484
2026-06-22T01:34:20.1993462Z             }
2026-06-22T01:34:20.1993705Z           ]
2026-06-22T01:34:20.1993952Z         },
2026-06-22T01:34:20.1994195Z         "int": {
2026-06-22T01:34:20.1994453Z           "complete": false,
2026-06-22T01:34:20.1994777Z           "evidence": []
2026-06-22T01:34:20.1995063Z         },
2026-06-22T01:34:20.1995298Z         "unit": {
2026-06-22T01:34:20.1995560Z           "complete": true,
2026-06-22T01:34:20.1995844Z           "evidence": [
2026-06-22T01:34:20.1996125Z             {
2026-06-22T01:34:20.1996407Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.1996778Z               "line": 657
2026-06-22T01:34:20.1997055Z             },
2026-06-22T01:34:20.1997303Z             {
2026-06-22T01:34:20.1997585Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.1997947Z               "line": 681
2026-06-22T01:34:20.1998227Z             },
2026-06-22T01:34:20.1998454Z             {
2026-06-22T01:34:20.1998725Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.1999156Z               "line": 705
2026-06-22T01:34:20.1999432Z             }
2026-06-22T01:34:20.1999689Z           ]
2026-06-22T01:34:20.1999927Z         }
2026-06-22T01:34:20.2000180Z       }
2026-06-22T01:34:20.2000415Z     },
2026-06-22T01:34:20.2000648Z     {
2026-06-22T01:34:20.2000885Z       "id": "REQ-ARCH-1",
2026-06-22T01:34:20.2001225Z       "title": "Many small acyclically-layered crates",
2026-06-22T01:34:20.2001611Z       "requiredStages": [
2026-06-22T01:34:20.2001907Z         "impl"
2026-06-22T01:34:20.2002169Z       ],
2026-06-22T01:34:20.2002442Z       "stages": {
2026-06-22T01:34:20.2002629Z         "doc": {
2026-06-22T01:34:20.2002818Z           "complete": false,
2026-06-22T01:34:20.2003033Z           "evidence": []
2026-06-22T01:34:20.2003215Z         },
2026-06-22T01:34:20.2003371Z         "impl": {
2026-06-22T01:34:20.2003561Z           "complete": true,
2026-06-22T01:34:20.2003764Z           "evidence": [
2026-06-22T01:34:20.2003955Z             {
2026-06-22T01:34:20.2004255Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-22T01:34:20.2004746Z               "line": 18
2026-06-22T01:34:20.2005023Z             },
2026-06-22T01:34:20.2005409Z             {
2026-06-22T01:34:20.2005699Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-22T01:34:20.2006082Z               "line": 12
2026-06-22T01:34:20.2006361Z             },
2026-06-22T01:34:20.2006605Z             {
2026-06-22T01:34:20.2006877Z               "path": "crates/spt-store/src/lib.rs",
2026-06-22T01:34:20.2007225Z               "line": 12
2026-06-22T01:34:20.2007492Z             }
2026-06-22T01:34:20.2007736Z           ]
2026-06-22T01:34:20.2007972Z         },
2026-06-22T01:34:20.2008216Z         "int": {
2026-06-22T01:34:20.2008483Z           "complete": false,
2026-06-22T01:34:20.2008796Z           "evidence": []
2026-06-22T01:34:20.2009144Z         },
2026-06-22T01:34:20.2009392Z         "unit": {
2026-06-22T01:34:20.2009663Z           "complete": false,
2026-06-22T01:34:20.2009964Z           "evidence": []
2026-06-22T01:34:20.2010240Z         }
2026-06-22T01:34:20.2010483Z       }
2026-06-22T01:34:20.2010716Z     },
2026-06-22T01:34:20.2010956Z     {
2026-06-22T01:34:20.2011218Z       "id": "REQ-ARCH-2",
2026-06-22T01:34:20.2011616Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-22T01:34:20.2012086Z       "requiredStages": [
2026-06-22T01:34:20.2012382Z         "impl"
2026-06-22T01:34:20.2012620Z       ],
2026-06-22T01:34:20.2012854Z       "stages": {
2026-06-22T01:34:20.2013116Z         "doc": {
2026-06-22T01:34:20.2013378Z           "complete": false,
2026-06-22T01:34:20.2013669Z           "evidence": []
2026-06-22T01:34:20.2013945Z         },
2026-06-22T01:34:20.2014193Z         "impl": {
2026-06-22T01:34:20.2029228Z           "complete": true,
2026-06-22T01:34:20.2029485Z           "evidence": [
2026-06-22T01:34:20.2029679Z             {
2026-06-22T01:34:20.2029893Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-22T01:34:20.2030149Z               "line": 18
2026-06-22T01:34:20.2030334Z             }
2026-06-22T01:34:20.2030526Z           ]
2026-06-22T01:34:20.2030677Z         },
2026-06-22T01:34:20.2030831Z         "int": {
2026-06-22T01:34:20.2031020Z           "complete": false,
2026-06-22T01:34:20.2031226Z           "evidence": []
2026-06-22T01:34:20.2031413Z         },
2026-06-22T01:34:20.2031565Z         "unit": {
2026-06-22T01:34:20.2031752Z           "complete": false,
2026-06-22T01:34:20.2031941Z           "evidence": []
2026-06-22T01:34:20.2032123Z         }
2026-06-22T01:34:20.2032280Z       }
2026-06-22T01:34:20.2032443Z     },
2026-06-22T01:34:20.2032598Z     {
2026-06-22T01:34:20.2032769Z       "id": "REQ-ARCH-3",
2026-06-22T01:34:20.2033069Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-22T01:34:20.2033408Z       "requiredStages": [
2026-06-22T01:34:20.2033607Z         "impl",
2026-06-22T01:34:20.2033769Z         "unit"
2026-06-22T01:34:20.2033936Z       ],
2026-06-22T01:34:20.2034098Z       "stages": {
2026-06-22T01:34:20.2034270Z         "doc": {
2026-06-22T01:34:20.2034445Z           "complete": false,
2026-06-22T01:34:20.2034642Z           "evidence": []
2026-06-22T01:34:20.2034832Z         },
2026-06-22T01:34:20.2034995Z         "impl": {
2026-06-22T01:34:20.2035174Z           "complete": true,
2026-06-22T01:34:20.2035369Z           "evidence": [
2026-06-22T01:34:20.2035554Z             {
2026-06-22T01:34:20.2035759Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:34:20.2036002Z               "line": 34
2026-06-22T01:34:20.2036178Z             },
2026-06-22T01:34:20.2036336Z             {
2026-06-22T01:34:20.2036527Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:34:20.2036784Z               "line": 41
2026-06-22T01:34:20.2036960Z             }
2026-06-22T01:34:20.2037123Z           ]
2026-06-22T01:34:20.2037285Z         },
2026-06-22T01:34:20.2037442Z         "int": {
2026-06-22T01:34:20.2037623Z           "complete": false,
2026-06-22T01:34:20.2037815Z           "evidence": []
2026-06-22T01:34:20.2038156Z         },
2026-06-22T01:34:20.2038323Z         "unit": {
2026-06-22T01:34:20.2038538Z           "complete": true,
2026-06-22T01:34:20.2038857Z           "evidence": [
2026-06-22T01:34:20.2039319Z             {
2026-06-22T01:34:20.2039515Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:34:20.2039764Z               "line": 51
2026-06-22T01:34:20.2039949Z             },
2026-06-22T01:34:20.2040112Z             {
2026-06-22T01:34:20.2040301Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:34:20.2040537Z               "line": 71
2026-06-22T01:34:20.2040723Z             },
2026-06-22T01:34:20.2040880Z             {
2026-06-22T01:34:20.2041067Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:34:20.2041300Z               "line": 83
2026-06-22T01:34:20.2041481Z             }
2026-06-22T01:34:20.2041639Z           ]
2026-06-22T01:34:20.2041796Z         }
2026-06-22T01:34:20.2041954Z       }
2026-06-22T01:34:20.2042120Z     },
2026-06-22T01:34:20.2042288Z     {
2026-06-22T01:34:20.2042439Z       "id": "REQ-ARCH-4",
2026-06-22T01:34:20.2042707Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-22T01:34:20.2043017Z       "requiredStages": [
2026-06-22T01:34:20.2043201Z         "impl",
2026-06-22T01:34:20.2043362Z         "unit"
2026-06-22T01:34:20.2043528Z       ],
2026-06-22T01:34:20.2043686Z       "stages": {
2026-06-22T01:34:20.2043857Z         "doc": {
2026-06-22T01:34:20.2044039Z           "complete": false,
2026-06-22T01:34:20.2044235Z           "evidence": []
2026-06-22T01:34:20.2044415Z         },
2026-06-22T01:34:20.2044578Z         "impl": {
2026-06-22T01:34:20.2044753Z           "complete": true,
2026-06-22T01:34:20.2044949Z           "evidence": [
2026-06-22T01:34:20.2045131Z             {
2026-06-22T01:34:20.2045335Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2045579Z               "line": 165
2026-06-22T01:34:20.2045754Z             },
2026-06-22T01:34:20.2045938Z             {
2026-06-22T01:34:20.2046128Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2046376Z               "line": 188
2026-06-22T01:34:20.2046558Z             },
2026-06-22T01:34:20.2046729Z             {
2026-06-22T01:34:20.2046920Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2047159Z               "line": 208
2026-06-22T01:34:20.2047334Z             },
2026-06-22T01:34:20.2047497Z             {
2026-06-22T01:34:20.2047678Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2047907Z               "line": 223
2026-06-22T01:34:20.2048084Z             },
2026-06-22T01:34:20.2048250Z             {
2026-06-22T01:34:20.2048433Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2048673Z               "line": 273
2026-06-22T01:34:20.2048860Z             }
2026-06-22T01:34:20.2049084Z           ]
2026-06-22T01:34:20.2049240Z         },
2026-06-22T01:34:20.2049390Z         "int": {
2026-06-22T01:34:20.2049574Z           "complete": false,
2026-06-22T01:34:20.2049779Z           "evidence": []
2026-06-22T01:34:20.2049957Z         },
2026-06-22T01:34:20.2050138Z         "unit": {
2026-06-22T01:34:20.2050310Z           "complete": true,
2026-06-22T01:34:20.2050499Z           "evidence": [
2026-06-22T01:34:20.2050677Z             {
2026-06-22T01:34:20.2050861Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2051102Z               "line": 334
2026-06-22T01:34:20.2051283Z             },
2026-06-22T01:34:20.2051445Z             {
2026-06-22T01:34:20.2051632Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2051865Z               "line": 344
2026-06-22T01:34:20.2052046Z             },
2026-06-22T01:34:20.2052223Z             {
2026-06-22T01:34:20.2052403Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2052642Z               "line": 355
2026-06-22T01:34:20.2052819Z             },
2026-06-22T01:34:20.2052976Z             {
2026-06-22T01:34:20.2053299Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2053531Z               "line": 366
2026-06-22T01:34:20.2053819Z             },
2026-06-22T01:34:20.2053974Z             {
2026-06-22T01:34:20.2054170Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2054388Z               "line": 378
2026-06-22T01:34:20.2054571Z             },
2026-06-22T01:34:20.2054737Z             {
2026-06-22T01:34:20.2054928Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2055157Z               "line": 391
2026-06-22T01:34:20.2055332Z             },
2026-06-22T01:34:20.2055500Z             {
2026-06-22T01:34:20.2055696Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2055924Z               "line": 402
2026-06-22T01:34:20.2076611Z             },
2026-06-22T01:34:20.2076831Z             {
2026-06-22T01:34:20.2077044Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2077292Z               "line": 419
2026-06-22T01:34:20.2077501Z             },
2026-06-22T01:34:20.2077656Z             {
2026-06-22T01:34:20.2077852Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.2078114Z               "line": 547
2026-06-22T01:34:20.2078314Z             }
2026-06-22T01:34:20.2078477Z           ]
2026-06-22T01:34:20.2078629Z         }
2026-06-22T01:34:20.2078782Z       }
2026-06-22T01:34:20.2079015Z     },
2026-06-22T01:34:20.2079177Z     {
2026-06-22T01:34:20.2079344Z       "id": "REQ-CLI-1",
2026-06-22T01:34:20.2080545Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-22T01:34:20.2081737Z       "requiredStages": [
2026-06-22T01:34:20.2081942Z         "impl",
2026-06-22T01:34:20.2082113Z         "unit"
2026-06-22T01:34:20.2082286Z       ],
2026-06-22T01:34:20.2082447Z       "stages": {
2026-06-22T01:34:20.2082618Z         "doc": {
2026-06-22T01:34:20.2082801Z           "complete": false,
2026-06-22T01:34:20.2082998Z           "evidence": []
2026-06-22T01:34:20.2083173Z         },
2026-06-22T01:34:20.2083336Z         "impl": {
2026-06-22T01:34:20.2083521Z           "complete": true,
2026-06-22T01:34:20.2083717Z           "evidence": [
2026-06-22T01:34:20.2083894Z             {
2026-06-22T01:34:20.2084089Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2084323Z               "line": 225
2026-06-22T01:34:20.2084509Z             },
2026-06-22T01:34:20.2084670Z             {
2026-06-22T01:34:20.2084844Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2085076Z               "line": 1093
2026-06-22T01:34:20.2085253Z             },
2026-06-22T01:34:20.2085418Z             {
2026-06-22T01:34:20.2085598Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2085812Z               "line": 1720
2026-06-22T01:34:20.2086011Z             },
2026-06-22T01:34:20.2086180Z             {
2026-06-22T01:34:20.2086355Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2086580Z               "line": 3124
2026-06-22T01:34:20.2086761Z             }
2026-06-22T01:34:20.2086928Z           ]
2026-06-22T01:34:20.2087095Z         },
2026-06-22T01:34:20.2087256Z         "int": {
2026-06-22T01:34:20.2087434Z           "complete": false,
2026-06-22T01:34:20.2087628Z           "evidence": []
2026-06-22T01:34:20.2087815Z         },
2026-06-22T01:34:20.2087980Z         "unit": {
2026-06-22T01:34:20.2088160Z           "complete": true,
2026-06-22T01:34:20.2088350Z           "evidence": [
2026-06-22T01:34:20.2088535Z             {
2026-06-22T01:34:20.2088713Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2088999Z               "line": 7947
2026-06-22T01:34:20.2089189Z             }
2026-06-22T01:34:20.2089522Z           ]
2026-06-22T01:34:20.2089686Z         }
2026-06-22T01:34:20.2089842Z       }
2026-06-22T01:34:20.2090095Z     },
2026-06-22T01:34:20.2090248Z     {
2026-06-22T01:34:20.2090414Z       "id": "REQ-CLI-2",
2026-06-22T01:34:20.2091205Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-22T01:34:20.2092035Z       "requiredStages": [
2026-06-22T01:34:20.2092217Z         "impl",
2026-06-22T01:34:20.2092388Z         "unit"
2026-06-22T01:34:20.2092551Z       ],
2026-06-22T01:34:20.2092702Z       "stages": {
2026-06-22T01:34:20.2092880Z         "doc": {
2026-06-22T01:34:20.2093054Z           "complete": false,
2026-06-22T01:34:20.2093254Z           "evidence": []
2026-06-22T01:34:20.2093433Z         },
2026-06-22T01:34:20.2093606Z         "impl": {
2026-06-22T01:34:20.2093790Z           "complete": true,
2026-06-22T01:34:20.2093986Z           "evidence": [
2026-06-22T01:34:20.2094178Z             {
2026-06-22T01:34:20.2094372Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2094620Z               "line": 414
2026-06-22T01:34:20.2094807Z             },
2026-06-22T01:34:20.2094969Z             {
2026-06-22T01:34:20.2095165Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:34:20.2095413Z               "line": 97
2026-06-22T01:34:20.2095598Z             },
2026-06-22T01:34:20.2095761Z             {
2026-06-22T01:34:20.2095959Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.2096205Z               "line": 256
2026-06-22T01:34:20.2096382Z             },
2026-06-22T01:34:20.2096558Z             {
2026-06-22T01:34:20.2096745Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2096982Z               "line": 434
2026-06-22T01:34:20.2097169Z             },
2026-06-22T01:34:20.2097345Z             {
2026-06-22T01:34:20.2097526Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2097760Z               "line": 1174
2026-06-22T01:34:20.2097946Z             },
2026-06-22T01:34:20.2098107Z             {
2026-06-22T01:34:20.2098290Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2098526Z               "line": 1958
2026-06-22T01:34:20.2098711Z             },
2026-06-22T01:34:20.2098876Z             {
2026-06-22T01:34:20.2099124Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2099344Z               "line": 2047
2026-06-22T01:34:20.2099524Z             },
2026-06-22T01:34:20.2099687Z             {
2026-06-22T01:34:20.2099869Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2100087Z               "line": 2108
2026-06-22T01:34:20.2100261Z             }
2026-06-22T01:34:20.2100416Z           ]
2026-06-22T01:34:20.2100570Z         },
2026-06-22T01:34:20.2100731Z         "int": {
2026-06-22T01:34:20.2100923Z           "complete": false,
2026-06-22T01:34:20.2101128Z           "evidence": []
2026-06-22T01:34:20.2101308Z         },
2026-06-22T01:34:20.2101484Z         "unit": {
2026-06-22T01:34:20.2101665Z           "complete": true,
2026-06-22T01:34:20.2101861Z           "evidence": [
2026-06-22T01:34:20.2102046Z             {
2026-06-22T01:34:20.2102247Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.2102500Z               "line": 338
2026-06-22T01:34:20.2102675Z             },
2026-06-22T01:34:20.2102843Z             {
2026-06-22T01:34:20.2103024Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2103257Z               "line": 8102
2026-06-22T01:34:20.2103445Z             }
2026-06-22T01:34:20.2103605Z           ]
2026-06-22T01:34:20.2103762Z         }
2026-06-22T01:34:20.2103912Z       }
2026-06-22T01:34:20.2104084Z     },
2026-06-22T01:34:20.2104246Z     {
2026-06-22T01:34:20.2104413Z       "id": "REQ-CLI-3",
2026-06-22T01:34:20.2105204Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-22T01:34:20.2106259Z       "requiredStages": [
2026-06-22T01:34:20.2106449Z         "impl",
2026-06-22T01:34:20.2106620Z         "unit"
2026-06-22T01:34:20.2106784Z       ],
2026-06-22T01:34:20.2106942Z       "stages": {
2026-06-22T01:34:20.2107118Z         "doc": {
2026-06-22T01:34:20.2107295Z           "complete": false,
2026-06-22T01:34:20.2107494Z           "evidence": []
2026-06-22T01:34:20.2107676Z         },
2026-06-22T01:34:20.2107838Z         "impl": {
2026-06-22T01:34:20.2108019Z           "complete": true,
2026-06-22T01:34:20.2108216Z           "evidence": [
2026-06-22T01:34:20.2108396Z             {
2026-06-22T01:34:20.2108578Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2108806Z               "line": 1087
2026-06-22T01:34:20.2109072Z             }
2026-06-22T01:34:20.2109239Z           ]
2026-06-22T01:34:20.2109398Z         },
2026-06-22T01:34:20.2109566Z         "int": {
2026-06-22T01:34:20.2109741Z           "complete": false,
2026-06-22T01:34:20.2109943Z           "evidence": []
2026-06-22T01:34:20.2110119Z         },
2026-06-22T01:34:20.2110281Z         "unit": {
2026-06-22T01:34:20.2110453Z           "complete": true,
2026-06-22T01:34:20.2110652Z           "evidence": [
2026-06-22T01:34:20.2110835Z             {
2026-06-22T01:34:20.2111015Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2111248Z               "line": 7912
2026-06-22T01:34:20.2111431Z             }
2026-06-22T01:34:20.2111582Z           ]
2026-06-22T01:34:20.2111750Z         }
2026-06-22T01:34:20.2111910Z       }
2026-06-22T01:34:20.2112073Z     },
2026-06-22T01:34:20.2112239Z     {
2026-06-22T01:34:20.2112412Z       "id": "REQ-CLI-4",
2026-06-22T01:34:20.2114740Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-22T01:34:20.2116637Z       "requiredStages": [],
2026-06-22T01:34:20.2116833Z       "stages": {
2026-06-22T01:34:20.2117023Z         "doc": {
2026-06-22T01:34:20.2117208Z           "complete": false,
2026-06-22T01:34:20.2117415Z           "evidence": []
2026-06-22T01:34:20.2117602Z         },
2026-06-22T01:34:20.2117768Z         "impl": {
2026-06-22T01:34:20.2117978Z           "complete": true,
2026-06-22T01:34:20.2118170Z           "evidence": [
2026-06-22T01:34:20.2118355Z             {
2026-06-22T01:34:20.2118546Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2118795Z               "line": 5678
2026-06-22T01:34:20.2119047Z             }
2026-06-22T01:34:20.2119223Z           ]
2026-06-22T01:34:20.2119429Z         },
2026-06-22T01:34:20.2119670Z         "int": {
2026-06-22T01:34:20.2120054Z           "complete": false,
2026-06-22T01:34:20.2120340Z           "evidence": []
2026-06-22T01:34:20.2120640Z         },
2026-06-22T01:34:20.2121404Z         "unit": {
2026-06-22T01:34:20.2121667Z           "complete": false,
2026-06-22T01:34:20.2122053Z           "evidence": []
2026-06-22T01:34:20.2122310Z         }
2026-06-22T01:34:20.2122599Z       }
2026-06-22T01:34:20.2122856Z     },
2026-06-22T01:34:20.2123100Z     {
2026-06-22T01:34:20.2123420Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-22T01:34:20.2126625Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-22T01:34:20.2130046Z       "requiredStages": [
2026-06-22T01:34:20.2130349Z         "impl",
2026-06-22T01:34:20.2130672Z         "unit"
2026-06-22T01:34:20.2130944Z       ],
2026-06-22T01:34:20.2131171Z       "stages": {
2026-06-22T01:34:20.2131477Z         "doc": {
2026-06-22T01:34:20.2131768Z           "complete": false,
2026-06-22T01:34:20.2132135Z           "evidence": []
2026-06-22T01:34:20.2132431Z         },
2026-06-22T01:34:20.2132664Z         "impl": {
2026-06-22T01:34:20.2133002Z           "complete": true,
2026-06-22T01:34:20.2133280Z           "evidence": [
2026-06-22T01:34:20.2133570Z             {
2026-06-22T01:34:20.2133880Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2134214Z               "line": 8
2026-06-22T01:34:20.2134566Z             },
2026-06-22T01:34:20.2134805Z             {
2026-06-22T01:34:20.2135101Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2135461Z               "line": 51
2026-06-22T01:34:20.2135726Z             },
2026-06-22T01:34:20.2136041Z             {
2026-06-22T01:34:20.2136317Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2136719Z               "line": 82
2026-06-22T01:34:20.2137000Z             },
2026-06-22T01:34:20.2137252Z             {
2026-06-22T01:34:20.2137581Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2137901Z               "line": 229
2026-06-22T01:34:20.2138162Z             }
2026-06-22T01:34:20.2138460Z           ]
2026-06-22T01:34:20.2138708Z         },
2026-06-22T01:34:20.2139127Z         "int": {
2026-06-22T01:34:20.2139404Z           "complete": false,
2026-06-22T01:34:20.2139685Z           "evidence": []
2026-06-22T01:34:20.2140019Z         },
2026-06-22T01:34:20.2140272Z         "unit": {
2026-06-22T01:34:20.2140559Z           "complete": true,
2026-06-22T01:34:20.2140842Z           "evidence": [
2026-06-22T01:34:20.2141126Z             {
2026-06-22T01:34:20.2141474Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2141824Z               "line": 249
2026-06-22T01:34:20.2142129Z             },
2026-06-22T01:34:20.2142395Z             {
2026-06-22T01:34:20.2142700Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2143054Z               "line": 256
2026-06-22T01:34:20.2143344Z             },
2026-06-22T01:34:20.2143657Z             {
2026-06-22T01:34:20.2143948Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2144267Z               "line": 263
2026-06-22T01:34:20.2144601Z             },
2026-06-22T01:34:20.2144860Z             {
2026-06-22T01:34:20.2145126Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2145522Z               "line": 270
2026-06-22T01:34:20.2145789Z             },
2026-06-22T01:34:20.2146143Z             {
2026-06-22T01:34:20.2146426Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2146740Z               "line": 297
2026-06-22T01:34:20.2147078Z             },
2026-06-22T01:34:20.2147331Z             {
2026-06-22T01:34:20.2147769Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2148117Z               "line": 307
2026-06-22T01:34:20.2148495Z             },
2026-06-22T01:34:20.2148832Z             {
2026-06-22T01:34:20.2149192Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2149545Z               "line": 317
2026-06-22T01:34:20.2150379Z             },
2026-06-22T01:34:20.2150650Z             {
2026-06-22T01:34:20.2150989Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2151335Z               "line": 331
2026-06-22T01:34:20.2151667Z             },
2026-06-22T01:34:20.2153047Z             {
2026-06-22T01:34:20.2153338Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2153705Z               "line": 340
2026-06-22T01:34:20.2153977Z             },
2026-06-22T01:34:20.2154212Z             {
2026-06-22T01:34:20.2154536Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2154875Z               "line": 348
2026-06-22T01:34:20.2155238Z             }
2026-06-22T01:34:20.2155505Z           ]
2026-06-22T01:34:20.2155734Z         }
2026-06-22T01:34:20.2156062Z       }
2026-06-22T01:34:20.2156307Z     },
2026-06-22T01:34:20.2156581Z     {
2026-06-22T01:34:20.2156884Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-22T01:34:20.2165430Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-22T01:34:20.2169748Z       "requiredStages": [
2026-06-22T01:34:20.2170084Z         "impl",
2026-06-22T01:34:20.2170370Z         "unit"
2026-06-22T01:34:20.2170642Z       ],
2026-06-22T01:34:20.2170966Z       "stages": {
2026-06-22T01:34:20.2171257Z         "doc": {
2026-06-22T01:34:20.2171552Z           "complete": false,
2026-06-22T01:34:20.2171891Z           "evidence": []
2026-06-22T01:34:20.2172148Z         },
2026-06-22T01:34:20.2172442Z         "impl": {
2026-06-22T01:34:20.2172731Z           "complete": true,
2026-06-22T01:34:20.2173003Z           "evidence": [
2026-06-22T01:34:20.2173374Z             {
2026-06-22T01:34:20.2173665Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2174056Z               "line": 141
2026-06-22T01:34:20.2174332Z             },
2026-06-22T01:34:20.2174580Z             {
2026-06-22T01:34:20.2174914Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2175238Z               "line": 1376
2026-06-22T01:34:20.2175600Z             },
2026-06-22T01:34:20.2175844Z             {
2026-06-22T01:34:20.2176092Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2176468Z               "line": 2145
2026-06-22T01:34:20.2176736Z             },
2026-06-22T01:34:20.2177197Z             {
2026-06-22T01:34:20.2177474Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2177894Z               "line": 4368
2026-06-22T01:34:20.2178253Z             },
2026-06-22T01:34:20.2178519Z             {
2026-06-22T01:34:20.2178815Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2179211Z               "line": 4466
2026-06-22T01:34:20.2179487Z             },
2026-06-22T01:34:20.2179774Z             {
2026-06-22T01:34:20.2180050Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2180449Z               "line": 5257
2026-06-22T01:34:20.2180743Z             },
2026-06-22T01:34:20.2181044Z             {
2026-06-22T01:34:20.2181368Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2181787Z               "line": 39
2026-06-22T01:34:20.2182069Z             }
2026-06-22T01:34:20.2182307Z           ]
2026-06-22T01:34:20.2182607Z         },
2026-06-22T01:34:20.2182875Z         "int": {
2026-06-22T01:34:20.2190386Z           "complete": false,
2026-06-22T01:34:20.2190673Z           "evidence": []
2026-06-22T01:34:20.2190892Z         },
2026-06-22T01:34:20.2191086Z         "unit": {
2026-06-22T01:34:20.2191294Z           "complete": true,
2026-06-22T01:34:20.2191505Z           "evidence": [
2026-06-22T01:34:20.2191694Z             {
2026-06-22T01:34:20.2191899Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2192143Z               "line": 10272
2026-06-22T01:34:20.2192334Z             },
2026-06-22T01:34:20.2192510Z             {
2026-06-22T01:34:20.2192711Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2192963Z               "line": 281
2026-06-22T01:34:20.2193177Z             },
2026-06-22T01:34:20.2193346Z             {
2026-06-22T01:34:20.2193529Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2193771Z               "line": 358
2026-06-22T01:34:20.2193961Z             },
2026-06-22T01:34:20.2194137Z             {
2026-06-22T01:34:20.2194338Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2194575Z               "line": 381
2026-06-22T01:34:20.2194786Z             },
2026-06-22T01:34:20.2194958Z             {
2026-06-22T01:34:20.2195152Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:34:20.2195386Z               "line": 395
2026-06-22T01:34:20.2195759Z             }
2026-06-22T01:34:20.2196016Z           ]
2026-06-22T01:34:20.2196203Z         }
2026-06-22T01:34:20.2196368Z       }
2026-06-22T01:34:20.2196530Z     },
2026-06-22T01:34:20.2196701Z     {
2026-06-22T01:34:20.2196883Z       "id": "REQ-CONSENT-1",
2026-06-22T01:34:20.2197913Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-22T01:34:20.2199043Z       "requiredStages": [
2026-06-22T01:34:20.2199258Z         "impl",
2026-06-22T01:34:20.2199430Z         "unit"
2026-06-22T01:34:20.2199616Z       ],
2026-06-22T01:34:20.2199779Z       "stages": {
2026-06-22T01:34:20.2199959Z         "doc": {
2026-06-22T01:34:20.2200146Z           "complete": false,
2026-06-22T01:34:20.2200351Z           "evidence": []
2026-06-22T01:34:20.2200541Z         },
2026-06-22T01:34:20.2200714Z         "impl": {
2026-06-22T01:34:20.2200903Z           "complete": true,
2026-06-22T01:34:20.2201099Z           "evidence": [
2026-06-22T01:34:20.2201301Z             {
2026-06-22T01:34:20.2201508Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2201769Z               "line": 27
2026-06-22T01:34:20.2201959Z             },
2026-06-22T01:34:20.2202126Z             {
2026-06-22T01:34:20.2202331Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2202574Z               "line": 75
2026-06-22T01:34:20.2202765Z             },
2026-06-22T01:34:20.2203141Z             {
2026-06-22T01:34:20.2203351Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2203704Z               "line": 98
2026-06-22T01:34:20.2203891Z             },
2026-06-22T01:34:20.2204052Z             {
2026-06-22T01:34:20.2204256Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:34:20.2204497Z               "line": 82
2026-06-22T01:34:20.2204679Z             },
2026-06-22T01:34:20.2204840Z             {
2026-06-22T01:34:20.2205087Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:34:20.2205327Z               "line": 109
2026-06-22T01:34:20.2205523Z             },
2026-06-22T01:34:20.2205694Z             {
2026-06-22T01:34:20.2205894Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:34:20.2206134Z               "line": 127
2026-06-22T01:34:20.2206328Z             },
2026-06-22T01:34:20.2206491Z             {
2026-06-22T01:34:20.2206690Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:34:20.2206947Z               "line": 142
2026-06-22T01:34:20.2207128Z             },
2026-06-22T01:34:20.2207304Z             {
2026-06-22T01:34:20.2207491Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2207730Z               "line": 7048
2026-06-22T01:34:20.2207924Z             }
2026-06-22T01:34:20.2208092Z           ]
2026-06-22T01:34:20.2208262Z         },
2026-06-22T01:34:20.2208445Z         "int": {
2026-06-22T01:34:20.2208630Z           "complete": false,
2026-06-22T01:34:20.2208830Z           "evidence": []
2026-06-22T01:34:20.2209187Z         },
2026-06-22T01:34:20.2209363Z         "unit": {
2026-06-22T01:34:20.2209547Z           "complete": true,
2026-06-22T01:34:20.2209753Z           "evidence": [
2026-06-22T01:34:20.2209933Z             {
2026-06-22T01:34:20.2210152Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2210391Z               "line": 334
2026-06-22T01:34:20.2210587Z             },
2026-06-22T01:34:20.2210759Z             {
2026-06-22T01:34:20.2210964Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2211201Z               "line": 380
2026-06-22T01:34:20.2211401Z             },
2026-06-22T01:34:20.2211570Z             {
2026-06-22T01:34:20.2211759Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2211998Z               "line": 391
2026-06-22T01:34:20.2212168Z             },
2026-06-22T01:34:20.2212343Z             {
2026-06-22T01:34:20.2212538Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:34:20.2212776Z               "line": 165
2026-06-22T01:34:20.2212953Z             },
2026-06-22T01:34:20.2213114Z             {
2026-06-22T01:34:20.2213306Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:34:20.2213554Z               "line": 184
2026-06-22T01:34:20.2213730Z             },
2026-06-22T01:34:20.2213902Z             {
2026-06-22T01:34:20.2214093Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:34:20.2214336Z               "line": 204
2026-06-22T01:34:20.2214513Z             },
2026-06-22T01:34:20.2214682Z             {
2026-06-22T01:34:20.2214872Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2215115Z               "line": 8334
2026-06-22T01:34:20.2215305Z             }
2026-06-22T01:34:20.2215477Z           ]
2026-06-22T01:34:20.2215634Z         }
2026-06-22T01:34:20.2215792Z       }
2026-06-22T01:34:20.2215953Z     },
2026-06-22T01:34:20.2216121Z     {
2026-06-22T01:34:20.2216292Z       "id": "REQ-CONSENT-2",
2026-06-22T01:34:20.2217208Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-22T01:34:20.2218137Z       "requiredStages": [
2026-06-22T01:34:20.2218337Z         "impl",
2026-06-22T01:34:20.2218633Z         "unit"
2026-06-22T01:34:20.2218790Z       ],
2026-06-22T01:34:20.2219043Z       "stages": {
2026-06-22T01:34:20.2219334Z         "doc": {
2026-06-22T01:34:20.2219515Z           "complete": false,
2026-06-22T01:34:20.2219714Z           "evidence": []
2026-06-22T01:34:20.2219900Z         },
2026-06-22T01:34:20.2220055Z         "impl": {
2026-06-22T01:34:20.2220226Z           "complete": true,
2026-06-22T01:34:20.2220426Z           "evidence": [
2026-06-22T01:34:20.2220604Z             {
2026-06-22T01:34:20.2220798Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2221041Z               "line": 140
2026-06-22T01:34:20.2221219Z             },
2026-06-22T01:34:20.2221389Z             {
2026-06-22T01:34:20.2221581Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2221820Z               "line": 165
2026-06-22T01:34:20.2222019Z             },
2026-06-22T01:34:20.2222182Z             {
2026-06-22T01:34:20.2222372Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2222624Z               "line": 199
2026-06-22T01:34:20.2222810Z             },
2026-06-22T01:34:20.2222979Z             {
2026-06-22T01:34:20.2223170Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2223399Z               "line": 241
2026-06-22T01:34:20.2223589Z             },
2026-06-22T01:34:20.2223762Z             {
2026-06-22T01:34:20.2223946Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2224185Z               "line": 269
2026-06-22T01:34:20.2224367Z             },
2026-06-22T01:34:20.2224538Z             {
2026-06-22T01:34:20.2224730Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2224963Z               "line": 300
2026-06-22T01:34:20.2225148Z             },
2026-06-22T01:34:20.2225314Z             {
2026-06-22T01:34:20.2225498Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2225737Z               "line": 6839
2026-06-22T01:34:20.2225927Z             },
2026-06-22T01:34:20.2226099Z             {
2026-06-22T01:34:20.2226280Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2226518Z               "line": 6897
2026-06-22T01:34:20.2226709Z             }
2026-06-22T01:34:20.2226861Z           ]
2026-06-22T01:34:20.2227019Z         },
2026-06-22T01:34:20.2227190Z         "int": {
2026-06-22T01:34:20.2227367Z           "complete": false,
2026-06-22T01:34:20.2227573Z           "evidence": []
2026-06-22T01:34:20.2227787Z         },
2026-06-22T01:34:20.2227945Z         "unit": {
2026-06-22T01:34:20.2228110Z           "complete": true,
2026-06-22T01:34:20.2228316Z           "evidence": [
2026-06-22T01:34:20.2228501Z             {
2026-06-22T01:34:20.2228697Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2229035Z               "line": 419
2026-06-22T01:34:20.2229264Z             },
2026-06-22T01:34:20.2229430Z             {
2026-06-22T01:34:20.2229631Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2229884Z               "line": 436
2026-06-22T01:34:20.2230075Z             },
2026-06-22T01:34:20.2230251Z             {
2026-06-22T01:34:20.2230445Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2230695Z               "line": 472
2026-06-22T01:34:20.2230873Z             },
2026-06-22T01:34:20.2231034Z             {
2026-06-22T01:34:20.2231230Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.2231455Z               "line": 516
2026-06-22T01:34:20.2231649Z             },
2026-06-22T01:34:20.2231807Z             {
2026-06-22T01:34:20.2231983Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2232217Z               "line": 9614
2026-06-22T01:34:20.2232399Z             },
2026-06-22T01:34:20.2232561Z             {
2026-06-22T01:34:20.2232738Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2232966Z               "line": 9696
2026-06-22T01:34:20.2233142Z             }
2026-06-22T01:34:20.2233317Z           ]
2026-06-22T01:34:20.2233596Z         }
2026-06-22T01:34:20.2233759Z       }
2026-06-22T01:34:20.2233920Z     },
2026-06-22T01:34:20.2234168Z     {
2026-06-22T01:34:20.2234336Z       "id": "REQ-CONSENT-3",
2026-06-22T01:34:20.2236349Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-22T01:34:20.2238027Z       "requiredStages": [
2026-06-22T01:34:20.2238228Z         "doc",
2026-06-22T01:34:20.2238400Z         "impl",
2026-06-22T01:34:20.2238589Z         "unit",
2026-06-22T01:34:20.2238751Z         "int"
2026-06-22T01:34:20.2239042Z       ],
2026-06-22T01:34:20.2239247Z       "stages": {
2026-06-22T01:34:20.2239439Z         "doc": {
2026-06-22T01:34:20.2239609Z           "complete": true,
2026-06-22T01:34:20.2239800Z           "evidence": [
2026-06-22T01:34:20.2239981Z             {
2026-06-22T01:34:20.2240163Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.2240374Z               "line": 304
2026-06-22T01:34:20.2240544Z             }
2026-06-22T01:34:20.2240698Z           ]
2026-06-22T01:34:20.2240868Z         },
2026-06-22T01:34:20.2241025Z         "impl": {
2026-06-22T01:34:20.2241208Z           "complete": true,
2026-06-22T01:34:20.2241410Z           "evidence": [
2026-06-22T01:34:20.2241584Z             {
2026-06-22T01:34:20.2241795Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.2242048Z               "line": 123
2026-06-22T01:34:20.2242238Z             },
2026-06-22T01:34:20.2242396Z             {
2026-06-22T01:34:20.2242606Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.2242848Z               "line": 162
2026-06-22T01:34:20.2243039Z             },
2026-06-22T01:34:20.2243197Z             {
2026-06-22T01:34:20.2243397Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.2243482Z               "line": 291
2026-06-22T01:34:20.2243565Z             },
2026-06-22T01:34:20.2243651Z             {
2026-06-22T01:34:20.2243777Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.2243863Z               "line": 574
2026-06-22T01:34:20.2243944Z             },
2026-06-22T01:34:20.2244024Z             {
2026-06-22T01:34:20.2244147Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.2244228Z               "line": 824
2026-06-22T01:34:20.2244319Z             },
2026-06-22T01:34:20.2244399Z             {
2026-06-22T01:34:20.2244514Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2244619Z               "line": 6965
2026-06-22T01:34:20.2244705Z             }
2026-06-22T01:34:20.2244790Z           ]
2026-06-22T01:34:20.2244882Z         },
2026-06-22T01:34:20.2244972Z         "int": {
2026-06-22T01:34:20.2245057Z           "complete": true,
2026-06-22T01:34:20.2245148Z           "evidence": [
2026-06-22T01:34:20.2245230Z             {
2026-06-22T01:34:20.2245363Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T01:34:20.2245449Z               "line": 16
2026-06-22T01:34:20.2245531Z             }
2026-06-22T01:34:20.2245606Z           ]
2026-06-22T01:34:20.2245692Z         },
2026-06-22T01:34:20.2245783Z         "unit": {
2026-06-22T01:34:20.2245874Z           "complete": true,
2026-06-22T01:34:20.2245958Z           "evidence": [
2026-06-22T01:34:20.2246040Z             {
2026-06-22T01:34:20.2246160Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.2246250Z               "line": 1019
2026-06-22T01:34:20.2246335Z             },
2026-06-22T01:34:20.2246535Z             {
2026-06-22T01:34:20.2246656Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.2246848Z               "line": 1066
2026-06-22T01:34:20.2246942Z             },
2026-06-22T01:34:20.2247023Z             {
2026-06-22T01:34:20.2247148Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.2247239Z               "line": 1394
2026-06-22T01:34:20.2247328Z             }
2026-06-22T01:34:20.2247415Z           ]
2026-06-22T01:34:20.2247500Z         }
2026-06-22T01:34:20.2247586Z       }
2026-06-22T01:34:20.2247667Z     },
2026-06-22T01:34:20.2247749Z     {
2026-06-22T01:34:20.2247853Z       "id": "REQ-CONV-1",
2026-06-22T01:34:20.2249345Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-22T01:34:20.2249478Z       "requiredStages": [
2026-06-22T01:34:20.2249569Z         "impl",
2026-06-22T01:34:20.2249650Z         "unit"
2026-06-22T01:34:20.2249732Z       ],
2026-06-22T01:34:20.2249826Z       "stages": {
2026-06-22T01:34:20.2249911Z         "doc": {
2026-06-22T01:34:20.2250009Z           "complete": false,
2026-06-22T01:34:20.2250104Z           "evidence": []
2026-06-22T01:34:20.2250188Z         },
2026-06-22T01:34:20.2250270Z         "impl": {
2026-06-22T01:34:20.2250361Z           "complete": true,
2026-06-22T01:34:20.2250456Z           "evidence": [
2026-06-22T01:34:20.2250546Z             {
2026-06-22T01:34:20.2250666Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2250756Z               "line": 988
2026-06-22T01:34:20.2250837Z             },
2026-06-22T01:34:20.2250924Z             {
2026-06-22T01:34:20.2251047Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.2251137Z               "line": 94
2026-06-22T01:34:20.2251219Z             },
2026-06-22T01:34:20.2251305Z             {
2026-06-22T01:34:20.2251428Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.2251513Z               "line": 345
2026-06-22T01:34:20.2251599Z             },
2026-06-22T01:34:20.2251674Z             {
2026-06-22T01:34:20.2251792Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.2251878Z               "line": 387
2026-06-22T01:34:20.2251965Z             },
2026-06-22T01:34:20.2252055Z             {
2026-06-22T01:34:20.2252169Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.2252260Z               "line": 472
2026-06-22T01:34:20.2252341Z             },
2026-06-22T01:34:20.2252431Z             {
2026-06-22T01:34:20.2252551Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2252637Z               "line": 667
2026-06-22T01:34:20.2252717Z             },
2026-06-22T01:34:20.2252803Z             {
2026-06-22T01:34:20.2252927Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2253013Z               "line": 693
2026-06-22T01:34:20.2253089Z             },
2026-06-22T01:34:20.2253166Z             {
2026-06-22T01:34:20.2253285Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.2253380Z               "line": 369
2026-06-22T01:34:20.2253462Z             },
2026-06-22T01:34:20.2253553Z             {
2026-06-22T01:34:20.2253676Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T01:34:20.2253767Z               "line": 19
2026-06-22T01:34:20.2253853Z             }
2026-06-22T01:34:20.2253938Z           ]
2026-06-22T01:34:20.2254019Z         },
2026-06-22T01:34:20.2254101Z         "int": {
2026-06-22T01:34:20.2254192Z           "complete": false,
2026-06-22T01:34:20.2254295Z           "evidence": []
2026-06-22T01:34:20.2254485Z         },
2026-06-22T01:34:20.2254579Z         "unit": {
2026-06-22T01:34:20.2254663Z           "complete": true,
2026-06-22T01:34:20.2254832Z           "evidence": [
2026-06-22T01:34:20.2254922Z             {
2026-06-22T01:34:20.2255046Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2255137Z               "line": 1263
2026-06-22T01:34:20.2255218Z             },
2026-06-22T01:34:20.2255307Z             {
2026-06-22T01:34:20.2255418Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T01:34:20.2255509Z               "line": 108
2026-06-22T01:34:20.2255594Z             },
2026-06-22T01:34:20.2255680Z             {
2026-06-22T01:34:20.2255805Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T01:34:20.2255885Z               "line": 134
2026-06-22T01:34:20.2255965Z             },
2026-06-22T01:34:20.2256043Z             {
2026-06-22T01:34:20.2256162Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T01:34:20.2256257Z               "line": 144
2026-06-22T01:34:20.2256343Z             }
2026-06-22T01:34:20.2256429Z           ]
2026-06-22T01:34:20.2256519Z         }
2026-06-22T01:34:20.2256609Z       }
2026-06-22T01:34:20.2256692Z     },
2026-06-22T01:34:20.2256782Z     {
2026-06-22T01:34:20.2256875Z       "id": "REQ-CONV-2",
2026-06-22T01:34:20.2257951Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-22T01:34:20.2258052Z       "requiredStages": [
2026-06-22T01:34:20.2258133Z         "impl",
2026-06-22T01:34:20.2258232Z         "unit"
2026-06-22T01:34:20.2258304Z       ],
2026-06-22T01:34:20.2258394Z       "stages": {
2026-06-22T01:34:20.2258485Z         "doc": {
2026-06-22T01:34:20.2258585Z           "complete": false,
2026-06-22T01:34:20.2258677Z           "evidence": []
2026-06-22T01:34:20.2258757Z         },
2026-06-22T01:34:20.2258862Z         "impl": {
2026-06-22T01:34:20.2259024Z           "complete": true,
2026-06-22T01:34:20.2259119Z           "evidence": [
2026-06-22T01:34:20.2259210Z             {
2026-06-22T01:34:20.2259330Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2259424Z               "line": 409
2026-06-22T01:34:20.2259511Z             },
2026-06-22T01:34:20.2259592Z             {
2026-06-22T01:34:20.2259724Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:34:20.2259809Z               "line": 119
2026-06-22T01:34:20.2259900Z             },
2026-06-22T01:34:20.2259982Z             {
2026-06-22T01:34:20.2260114Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.2260196Z               "line": 841
2026-06-22T01:34:20.2260282Z             },
2026-06-22T01:34:20.2260363Z             {
2026-06-22T01:34:20.2260491Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.2260583Z               "line": 852
2026-06-22T01:34:20.2260669Z             },
2026-06-22T01:34:20.2260758Z             {
2026-06-22T01:34:20.2260874Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.2260954Z               "line": 334
2026-06-22T01:34:20.2261035Z             },
2026-06-22T01:34:20.2261120Z             {
2026-06-22T01:34:20.2261227Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2261307Z               "line": 3074
2026-06-22T01:34:20.2261402Z             },
2026-06-22T01:34:20.2261484Z             {
2026-06-22T01:34:20.2261593Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2261678Z               "line": 3090
2026-06-22T01:34:20.2261774Z             },
2026-06-22T01:34:20.2261852Z             {
2026-06-22T01:34:20.2261955Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2262049Z               "line": 3170
2026-06-22T01:34:20.2262253Z             }
2026-06-22T01:34:20.2262334Z           ]
2026-06-22T01:34:20.2262496Z         },
2026-06-22T01:34:20.2262582Z         "int": {
2026-06-22T01:34:20.2262672Z           "complete": false,
2026-06-22T01:34:20.2262767Z           "evidence": []
2026-06-22T01:34:20.2262854Z         },
2026-06-22T01:34:20.2263135Z         "unit": {
2026-06-22T01:34:20.2263277Z           "complete": true,
2026-06-22T01:34:20.2263407Z           "evidence": [
2026-06-22T01:34:20.2319113Z             {
2026-06-22T01:34:20.2319384Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2319550Z               "line": 889
2026-06-22T01:34:20.2319646Z             },
2026-06-22T01:34:20.2319724Z             {
2026-06-22T01:34:20.2319870Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2319946Z               "line": 1014
2026-06-22T01:34:20.2320034Z             },
2026-06-22T01:34:20.2320119Z             {
2026-06-22T01:34:20.2320298Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:34:20.2320389Z               "line": 215
2026-06-22T01:34:20.2320460Z             }
2026-06-22T01:34:20.2320544Z           ]
2026-06-22T01:34:20.2320629Z         }
2026-06-22T01:34:20.2320716Z       }
2026-06-22T01:34:20.2320798Z     },
2026-06-22T01:34:20.2320873Z     {
2026-06-22T01:34:20.2320978Z       "id": "REQ-DAEMON-1",
2026-06-22T01:34:20.2321146Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-22T01:34:20.2321235Z       "requiredStages": [
2026-06-22T01:34:20.2321322Z         "impl",
2026-06-22T01:34:20.2321403Z         "unit",
2026-06-22T01:34:20.2321484Z         "int"
2026-06-22T01:34:20.2321574Z       ],
2026-06-22T01:34:20.2321661Z       "stages": {
2026-06-22T01:34:20.2321741Z         "doc": {
2026-06-22T01:34:20.2321841Z           "complete": false,
2026-06-22T01:34:20.2321926Z           "evidence": []
2026-06-22T01:34:20.2322014Z         },
2026-06-22T01:34:20.2322093Z         "impl": {
2026-06-22T01:34:20.2322189Z           "complete": true,
2026-06-22T01:34:20.2322285Z           "evidence": [
2026-06-22T01:34:20.2322366Z             {
2026-06-22T01:34:20.2322499Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2322586Z               "line": 229
2026-06-22T01:34:20.2322672Z             },
2026-06-22T01:34:20.2322751Z             {
2026-06-22T01:34:20.2322876Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.2322968Z               "line": 12
2026-06-22T01:34:20.2323052Z             },
2026-06-22T01:34:20.2323142Z             {
2026-06-22T01:34:20.2323256Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2323348Z               "line": 16
2026-06-22T01:34:20.2323428Z             },
2026-06-22T01:34:20.2323513Z             {
2026-06-22T01:34:20.2323633Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2323714Z               "line": 309
2026-06-22T01:34:20.2323800Z             },
2026-06-22T01:34:20.2323876Z             {
2026-06-22T01:34:20.2324000Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2324085Z               "line": 24
2026-06-22T01:34:20.2324177Z             },
2026-06-22T01:34:20.2324258Z             {
2026-06-22T01:34:20.2324363Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2324458Z               "line": 262
2026-06-22T01:34:20.2324520Z             },
2026-06-22T01:34:20.2324606Z             {
2026-06-22T01:34:20.2324729Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2324821Z               "line": 279
2026-06-22T01:34:20.2324902Z             },
2026-06-22T01:34:20.2324987Z             {
2026-06-22T01:34:20.2325111Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2325194Z               "line": 356
2026-06-22T01:34:20.2325274Z             },
2026-06-22T01:34:20.2325363Z             {
2026-06-22T01:34:20.2325467Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2325833Z               "line": 670
2026-06-22T01:34:20.2325919Z             },
2026-06-22T01:34:20.2326109Z             {
2026-06-22T01:34:20.2326224Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T01:34:20.2326319Z               "line": 15
2026-06-22T01:34:20.2326409Z             },
2026-06-22T01:34:20.2326491Z             {
2026-06-22T01:34:20.2326610Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2326695Z               "line": 241
2026-06-22T01:34:20.2326783Z             },
2026-06-22T01:34:20.2326863Z             {
2026-06-22T01:34:20.2326981Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T01:34:20.2327077Z               "line": 13
2026-06-22T01:34:20.2327163Z             },
2026-06-22T01:34:20.2327244Z             {
2026-06-22T01:34:20.2327353Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2327445Z               "line": 382
2026-06-22T01:34:20.2327530Z             },
2026-06-22T01:34:20.2327621Z             {
2026-06-22T01:34:20.2327727Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2327831Z               "line": 494
2026-06-22T01:34:20.2327945Z             }
2026-06-22T01:34:20.2328027Z           ]
2026-06-22T01:34:20.2328113Z         },
2026-06-22T01:34:20.2328202Z         "int": {
2026-06-22T01:34:20.2328296Z           "complete": true,
2026-06-22T01:34:20.2328383Z           "evidence": [
2026-06-22T01:34:20.2328467Z             {
2026-06-22T01:34:20.2328642Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T01:34:20.2328728Z               "line": 2
2026-06-22T01:34:20.2328810Z             },
2026-06-22T01:34:20.2328890Z             {
2026-06-22T01:34:20.2329153Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T01:34:20.2329252Z               "line": 16
2026-06-22T01:34:20.2329330Z             },
2026-06-22T01:34:20.2329415Z             {
2026-06-22T01:34:20.2329562Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-22T01:34:20.2329654Z               "line": 12
2026-06-22T01:34:20.2329744Z             },
2026-06-22T01:34:20.2329830Z             {
2026-06-22T01:34:20.2329959Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-22T01:34:20.2330045Z               "line": 12
2026-06-22T01:34:20.2330129Z             },
2026-06-22T01:34:20.2330206Z             {
2026-06-22T01:34:20.2330346Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T01:34:20.2330430Z               "line": 44
2026-06-22T01:34:20.2330516Z             }
2026-06-22T01:34:20.2330604Z           ]
2026-06-22T01:34:20.2330689Z         },
2026-06-22T01:34:20.2330778Z         "unit": {
2026-06-22T01:34:20.2330858Z           "complete": true,
2026-06-22T01:34:20.2330954Z           "evidence": [
2026-06-22T01:34:20.2331030Z             {
2026-06-22T01:34:20.2331147Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.2331238Z               "line": 285
2026-06-22T01:34:20.2331310Z             },
2026-06-22T01:34:20.2331401Z             {
2026-06-22T01:34:20.2331509Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.2331596Z               "line": 293
2026-06-22T01:34:20.2331676Z             },
2026-06-22T01:34:20.2331757Z             {
2026-06-22T01:34:20.2331867Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.2331944Z               "line": 309
2026-06-22T01:34:20.2332039Z             },
2026-06-22T01:34:20.2332119Z             {
2026-06-22T01:34:20.2332245Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.2332339Z               "line": 317
2026-06-22T01:34:20.2332415Z             },
2026-06-22T01:34:20.2332496Z             {
2026-06-22T01:34:20.2332607Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2332707Z               "line": 659
2026-06-22T01:34:20.2332788Z             },
2026-06-22T01:34:20.2332982Z             {
2026-06-22T01:34:20.2333107Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2333279Z               "line": 729
2026-06-22T01:34:20.2333364Z             },
2026-06-22T01:34:20.2333446Z             {
2026-06-22T01:34:20.2333575Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2333654Z               "line": 1211
2026-06-22T01:34:20.2333740Z             },
2026-06-22T01:34:20.2333826Z             {
2026-06-22T01:34:20.2333941Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2334035Z               "line": 1248
2026-06-22T01:34:20.2334117Z             },
2026-06-22T01:34:20.2334203Z             {
2026-06-22T01:34:20.2334316Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2334402Z               "line": 1271
2026-06-22T01:34:20.2334490Z             },
2026-06-22T01:34:20.2334565Z             {
2026-06-22T01:34:20.2334674Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2334770Z               "line": 1300
2026-06-22T01:34:20.2334856Z             },
2026-06-22T01:34:20.2334946Z             {
2026-06-22T01:34:20.2335066Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2335148Z               "line": 1348
2026-06-22T01:34:20.2335232Z             },
2026-06-22T01:34:20.2335323Z             {
2026-06-22T01:34:20.2335434Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2335528Z               "line": 1391
2026-06-22T01:34:20.2335604Z             },
2026-06-22T01:34:20.2335685Z             {
2026-06-22T01:34:20.2335801Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T01:34:20.2335880Z               "line": 106
2026-06-22T01:34:20.2335965Z             },
2026-06-22T01:34:20.2336051Z             {
2026-06-22T01:34:20.2336165Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T01:34:20.2336259Z               "line": 132
2026-06-22T01:34:20.2336345Z             },
2026-06-22T01:34:20.2336431Z             {
2026-06-22T01:34:20.2336545Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2336645Z               "line": 530
2026-06-22T01:34:20.2336727Z             }
2026-06-22T01:34:20.2336813Z           ]
2026-06-22T01:34:20.2336898Z         }
2026-06-22T01:34:20.2336979Z       }
2026-06-22T01:34:20.2337061Z     },
2026-06-22T01:34:20.2337142Z     {
2026-06-22T01:34:20.2337241Z       "id": "REQ-DAEMON-2",
2026-06-22T01:34:20.2337380Z       "title": "Broker/brain split for seamless self-update",
2026-06-22T01:34:20.2337480Z       "requiredStages": [
2026-06-22T01:34:20.2337561Z         "impl",
2026-06-22T01:34:20.2337647Z         "unit",
2026-06-22T01:34:20.2337733Z         "int"
2026-06-22T01:34:20.2337814Z       ],
2026-06-22T01:34:20.2337894Z       "stages": {
2026-06-22T01:34:20.2337982Z         "doc": {
2026-06-22T01:34:20.2338080Z           "complete": true,
2026-06-22T01:34:20.2338167Z           "evidence": [
2026-06-22T01:34:20.2338248Z             {
2026-06-22T01:34:20.2338414Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-22T01:34:20.2338510Z               "line": 250
2026-06-22T01:34:20.2338596Z             }
2026-06-22T01:34:20.2338682Z           ]
2026-06-22T01:34:20.2338767Z         },
2026-06-22T01:34:20.2338856Z         "impl": {
2026-06-22T01:34:20.2339027Z           "complete": true,
2026-06-22T01:34:20.2339131Z           "evidence": [
2026-06-22T01:34:20.2339212Z             {
2026-06-22T01:34:20.2339327Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2339417Z               "line": 23
2026-06-22T01:34:20.2339502Z             },
2026-06-22T01:34:20.2339585Z             {
2026-06-22T01:34:20.2339694Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2339784Z               "line": 922
2026-06-22T01:34:20.2339860Z             },
2026-06-22T01:34:20.2339937Z             {
2026-06-22T01:34:20.2340047Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2340243Z               "line": 963
2026-06-22T01:34:20.2340333Z             },
2026-06-22T01:34:20.2340419Z             {
2026-06-22T01:34:20.2340615Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2340709Z               "line": 1199
2026-06-22T01:34:20.2340785Z             },
2026-06-22T01:34:20.2340859Z             {
2026-06-22T01:34:20.2340986Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2341072Z               "line": 32
2026-06-22T01:34:20.2341154Z             },
2026-06-22T01:34:20.2341230Z             {
2026-06-22T01:34:20.2341347Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2341433Z               "line": 1257
2026-06-22T01:34:20.2341514Z             },
2026-06-22T01:34:20.2341599Z             {
2026-06-22T01:34:20.2341707Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2341793Z               "line": 2098
2026-06-22T01:34:20.2341880Z             },
2026-06-22T01:34:20.2341961Z             {
2026-06-22T01:34:20.2342079Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2342166Z               "line": 2385
2026-06-22T01:34:20.2342251Z             },
2026-06-22T01:34:20.2342336Z             {
2026-06-22T01:34:20.2342447Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T01:34:20.2342542Z               "line": 11
2026-06-22T01:34:20.2342619Z             },
2026-06-22T01:34:20.2342703Z             {
2026-06-22T01:34:20.2342805Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2342899Z               "line": 153
2026-06-22T01:34:20.2342980Z             },
2026-06-22T01:34:20.2343052Z             {
2026-06-22T01:34:20.2343167Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2343257Z               "line": 343
2026-06-22T01:34:20.2343348Z             },
2026-06-22T01:34:20.2343429Z             {
2026-06-22T01:34:20.2343543Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2343643Z               "line": 13
2026-06-22T01:34:20.2343730Z             },
2026-06-22T01:34:20.2343811Z             {
2026-06-22T01:34:20.2343939Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2344026Z               "line": 27
2026-06-22T01:34:20.2344112Z             },
2026-06-22T01:34:20.2344200Z             {
2026-06-22T01:34:20.2344309Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2344386Z               "line": 173
2026-06-22T01:34:20.2344473Z             },
2026-06-22T01:34:20.2344557Z             {
2026-06-22T01:34:20.2344677Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2344759Z               "line": 682
2026-06-22T01:34:20.2344840Z             },
2026-06-22T01:34:20.2344924Z             {
2026-06-22T01:34:20.2345026Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2345120Z               "line": 903
2026-06-22T01:34:20.2345206Z             },
2026-06-22T01:34:20.2345292Z             {
2026-06-22T01:34:20.2345412Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2345507Z               "line": 1050
2026-06-22T01:34:20.2345588Z             },
2026-06-22T01:34:20.2345669Z             {
2026-06-22T01:34:20.2345783Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2345869Z               "line": 1139
2026-06-22T01:34:20.2345961Z             },
2026-06-22T01:34:20.2346046Z             {
2026-06-22T01:34:20.2346160Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2346250Z               "line": 1261
2026-06-22T01:34:20.2346333Z             },
2026-06-22T01:34:20.2346417Z             {
2026-06-22T01:34:20.2346540Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:34:20.2346636Z               "line": 10
2026-06-22T01:34:20.2346720Z             }
2026-06-22T01:34:20.2346800Z           ]
2026-06-22T01:34:20.2346885Z         },
2026-06-22T01:34:20.2346967Z         "int": {
2026-06-22T01:34:20.2347158Z           "complete": true,
2026-06-22T01:34:20.2347244Z           "evidence": [
2026-06-22T01:34:20.2347415Z             {
2026-06-22T01:34:20.2347539Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:34:20.2347626Z               "line": 17
2026-06-22T01:34:20.2347711Z             },
2026-06-22T01:34:20.2347796Z             {
2026-06-22T01:34:20.2347922Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:34:20.2348012Z               "line": 90
2026-06-22T01:34:20.2348101Z             },
2026-06-22T01:34:20.2348188Z             {
2026-06-22T01:34:20.2348297Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:34:20.2348388Z               "line": 110
2026-06-22T01:34:20.2348464Z             },
2026-06-22T01:34:20.2348547Z             {
2026-06-22T01:34:20.2348664Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:34:20.2348755Z               "line": 186
2026-06-22T01:34:20.2348852Z             },
2026-06-22T01:34:20.2348932Z             {
2026-06-22T01:34:20.2349161Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:34:20.2349256Z               "line": 309
2026-06-22T01:34:20.2349346Z             },
2026-06-22T01:34:20.2349431Z             {
2026-06-22T01:34:20.2349550Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T01:34:20.2349634Z               "line": 128
2026-06-22T01:34:20.2349715Z             },
2026-06-22T01:34:20.2349796Z             {
2026-06-22T01:34:20.2349916Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T01:34:20.2350010Z               "line": 59
2026-06-22T01:34:20.2350091Z             }
2026-06-22T01:34:20.2350178Z           ]
2026-06-22T01:34:20.2350254Z         },
2026-06-22T01:34:20.2350330Z         "unit": {
2026-06-22T01:34:20.2350421Z           "complete": true,
2026-06-22T01:34:20.2350502Z           "evidence": [
2026-06-22T01:34:20.2350588Z             {
2026-06-22T01:34:20.2350706Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T01:34:20.2350789Z               "line": 62
2026-06-22T01:34:20.2350883Z             },
2026-06-22T01:34:20.2350964Z             {
2026-06-22T01:34:20.2351084Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T01:34:20.2351165Z               "line": 76
2026-06-22T01:34:20.2351255Z             },
2026-06-22T01:34:20.2351336Z             {
2026-06-22T01:34:20.2351456Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T01:34:20.2351550Z               "line": 88
2026-06-22T01:34:20.2351632Z             },
2026-06-22T01:34:20.2351719Z             {
2026-06-22T01:34:20.2351833Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.2351917Z               "line": 347
2026-06-22T01:34:20.2352007Z             },
2026-06-22T01:34:20.2352088Z             {
2026-06-22T01:34:20.2352196Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2352286Z               "line": 901
2026-06-22T01:34:20.2352372Z             },
2026-06-22T01:34:20.2352459Z             {
2026-06-22T01:34:20.2352568Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2352658Z               "line": 909
2026-06-22T01:34:20.2352740Z             },
2026-06-22T01:34:20.2352821Z             {
2026-06-22T01:34:20.2352920Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2353012Z               "line": 926
2026-06-22T01:34:20.2353098Z             },
2026-06-22T01:34:20.2353179Z             {
2026-06-22T01:34:20.2353283Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2353374Z               "line": 1035
2026-06-22T01:34:20.2353469Z             },
2026-06-22T01:34:20.2353550Z             {
2026-06-22T01:34:20.2353661Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2353751Z               "line": 1370
2026-06-22T01:34:20.2353837Z             },
2026-06-22T01:34:20.2353922Z             {
2026-06-22T01:34:20.2354028Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2354232Z               "line": 1382
2026-06-22T01:34:20.2354408Z             },
2026-06-22T01:34:20.2354495Z             {
2026-06-22T01:34:20.2354610Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:34:20.2354700Z               "line": 110
2026-06-22T01:34:20.2354784Z             },
2026-06-22T01:34:20.2354870Z             {
2026-06-22T01:34:20.2354980Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T01:34:20.2355066Z               "line": 145
2026-06-22T01:34:20.2355155Z             }
2026-06-22T01:34:20.2355247Z           ]
2026-06-22T01:34:20.2355328Z         }
2026-06-22T01:34:20.2355419Z       }
2026-06-22T01:34:20.2355508Z     },
2026-06-22T01:34:20.2355595Z     {
2026-06-22T01:34:20.2355690Z       "id": "REQ-DAEMON-3",
2026-06-22T01:34:20.2355852Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-22T01:34:20.2355944Z       "requiredStages": [
2026-06-22T01:34:20.2356043Z         "impl",
2026-06-22T01:34:20.2356133Z         "unit",
2026-06-22T01:34:20.2356215Z         "int"
2026-06-22T01:34:20.2356315Z       ],
2026-06-22T01:34:20.2356401Z       "stages": {
2026-06-22T01:34:20.2356486Z         "doc": {
2026-06-22T01:34:20.2356583Z           "complete": false,
2026-06-22T01:34:20.2356676Z           "evidence": []
2026-06-22T01:34:20.2356758Z         },
2026-06-22T01:34:20.2356840Z         "impl": {
2026-06-22T01:34:20.2356935Z           "complete": true,
2026-06-22T01:34:20.2357024Z           "evidence": [
2026-06-22T01:34:20.2357114Z             {
2026-06-22T01:34:20.2357239Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2357332Z               "line": 14
2026-06-22T01:34:20.2357417Z             },
2026-06-22T01:34:20.2357503Z             {
2026-06-22T01:34:20.2357614Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:34:20.2357703Z               "line": 11
2026-06-22T01:34:20.2357789Z             },
2026-06-22T01:34:20.2357871Z             {
2026-06-22T01:34:20.2357980Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.2358070Z               "line": 305
2026-06-22T01:34:20.2358153Z             },
2026-06-22T01:34:20.2358238Z             {
2026-06-22T01:34:20.2358342Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2358439Z               "line": 1956
2026-06-22T01:34:20.2358524Z             },
2026-06-22T01:34:20.2358605Z             {
2026-06-22T01:34:20.2358705Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2358792Z               "line": 4235
2026-06-22T01:34:20.2358881Z             },
2026-06-22T01:34:20.2359038Z             {
2026-06-22T01:34:20.2359145Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2359248Z               "line": 4256
2026-06-22T01:34:20.2359329Z             }
2026-06-22T01:34:20.2359436Z           ]
2026-06-22T01:34:20.2359529Z         },
2026-06-22T01:34:20.2359611Z         "int": {
2026-06-22T01:34:20.2359703Z           "complete": true,
2026-06-22T01:34:20.2359789Z           "evidence": [
2026-06-22T01:34:20.2359868Z             {
2026-06-22T01:34:20.2359991Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.2360072Z               "line": 49
2026-06-22T01:34:20.2360148Z             },
2026-06-22T01:34:20.2360237Z             {
2026-06-22T01:34:20.2360347Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.2360428Z               "line": 487
2026-06-22T01:34:20.2360518Z             }
2026-06-22T01:34:20.2360599Z           ]
2026-06-22T01:34:20.2360680Z         },
2026-06-22T01:34:20.2360767Z         "unit": {
2026-06-22T01:34:20.2360866Z           "complete": true,
2026-06-22T01:34:20.2360947Z           "evidence": [
2026-06-22T01:34:20.2361034Z             {
2026-06-22T01:34:20.2361148Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2361238Z               "line": 1553
2026-06-22T01:34:20.2361324Z             },
2026-06-22T01:34:20.2361510Z             {
2026-06-22T01:34:20.2361620Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2361801Z               "line": 10715
2026-06-22T01:34:20.2361882Z             }
2026-06-22T01:34:20.2361969Z           ]
2026-06-22T01:34:20.2362054Z         }
2026-06-22T01:34:20.2362139Z       }
2026-06-22T01:34:20.2362216Z     },
2026-06-22T01:34:20.2362303Z     {
2026-06-22T01:34:20.2362383Z       "id": "REQ-DAEMON-4",
2026-06-22T01:34:20.2362510Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-22T01:34:20.2362605Z       "requiredStages": [
2026-06-22T01:34:20.2362682Z         "impl",
2026-06-22T01:34:20.2362770Z         "unit",
2026-06-22T01:34:20.2362860Z         "int"
2026-06-22T01:34:20.2362937Z       ],
2026-06-22T01:34:20.2363024Z       "stages": {
2026-06-22T01:34:20.2363114Z         "doc": {
2026-06-22T01:34:20.2363214Z           "complete": false,
2026-06-22T01:34:20.2363291Z           "evidence": []
2026-06-22T01:34:20.2363381Z         },
2026-06-22T01:34:20.2363466Z         "impl": {
2026-06-22T01:34:20.2363552Z           "complete": true,
2026-06-22T01:34:20.2363643Z           "evidence": [
2026-06-22T01:34:20.2363739Z             {
2026-06-22T01:34:20.2363867Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2363953Z               "line": 464
2026-06-22T01:34:20.2364038Z             },
2026-06-22T01:34:20.2364119Z             {
2026-06-22T01:34:20.2364240Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2364320Z               "line": 529
2026-06-22T01:34:20.2364411Z             },
2026-06-22T01:34:20.2364492Z             {
2026-06-22T01:34:20.2364611Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2364701Z               "line": 551
2026-06-22T01:34:20.2364787Z             }
2026-06-22T01:34:20.2364874Z           ]
2026-06-22T01:34:20.2364959Z         },
2026-06-22T01:34:20.2365045Z         "int": {
2026-06-22T01:34:20.2365146Z           "complete": true,
2026-06-22T01:34:20.2365237Z           "evidence": [
2026-06-22T01:34:20.2365325Z             {
2026-06-22T01:34:20.2365444Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T01:34:20.2365540Z               "line": 42
2026-06-22T01:34:20.2365622Z             }
2026-06-22T01:34:20.2365711Z           ]
2026-06-22T01:34:20.2365797Z         },
2026-06-22T01:34:20.2365884Z         "unit": {
2026-06-22T01:34:20.2365979Z           "complete": true,
2026-06-22T01:34:20.2366068Z           "evidence": [
2026-06-22T01:34:20.2366160Z             {
2026-06-22T01:34:20.2366275Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.2366369Z               "line": 428
2026-06-22T01:34:20.2366461Z             },
2026-06-22T01:34:20.2366546Z             {
2026-06-22T01:34:20.2366665Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2366751Z               "line": 957
2026-06-22T01:34:20.2366847Z             },
2026-06-22T01:34:20.2366927Z             {
2026-06-22T01:34:20.2367042Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2367138Z               "line": 1027
2026-06-22T01:34:20.2367209Z             },
2026-06-22T01:34:20.2367304Z             {
2026-06-22T01:34:20.2367410Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2367505Z               "line": 1057
2026-06-22T01:34:20.2367580Z             },
2026-06-22T01:34:20.2367670Z             {
2026-06-22T01:34:20.2367799Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2367887Z               "line": 1090
2026-06-22T01:34:20.2367973Z             }
2026-06-22T01:34:20.2368050Z           ]
2026-06-22T01:34:20.2368131Z         }
2026-06-22T01:34:20.2368207Z       }
2026-06-22T01:34:20.2368292Z     },
2026-06-22T01:34:20.2368378Z     {
2026-06-22T01:34:20.2368464Z       "id": "REQ-DAEMON-5",
2026-06-22T01:34:20.2370071Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-22T01:34:20.2370377Z       "requiredStages": [
2026-06-22T01:34:20.2370470Z         "impl",
2026-06-22T01:34:20.2370560Z         "unit"
2026-06-22T01:34:20.2370642Z       ],
2026-06-22T01:34:20.2370736Z       "stages": {
2026-06-22T01:34:20.2370821Z         "doc": {
2026-06-22T01:34:20.2370917Z           "complete": false,
2026-06-22T01:34:20.2371003Z           "evidence": []
2026-06-22T01:34:20.2371083Z         },
2026-06-22T01:34:20.2371174Z         "impl": {
2026-06-22T01:34:20.2371255Z           "complete": true,
2026-06-22T01:34:20.2371346Z           "evidence": [
2026-06-22T01:34:20.2371426Z             {
2026-06-22T01:34:20.2371560Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2371670Z               "line": 476
2026-06-22T01:34:20.2371760Z             },
2026-06-22T01:34:20.2371851Z             {
2026-06-22T01:34:20.2371975Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2372056Z               "line": 769
2026-06-22T01:34:20.2372142Z             },
2026-06-22T01:34:20.2372219Z             {
2026-06-22T01:34:20.2372337Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2372423Z               "line": 782
2026-06-22T01:34:20.2372515Z             },
2026-06-22T01:34:20.2372596Z             {
2026-06-22T01:34:20.2372714Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2372795Z               "line": 800
2026-06-22T01:34:20.2372878Z             },
2026-06-22T01:34:20.2372962Z             {
2026-06-22T01:34:20.2373075Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2373165Z               "line": 841
2026-06-22T01:34:20.2373251Z             }
2026-06-22T01:34:20.2373340Z           ]
2026-06-22T01:34:20.2373430Z         },
2026-06-22T01:34:20.2373517Z         "int": {
2026-06-22T01:34:20.2373627Z           "complete": false,
2026-06-22T01:34:20.2373712Z           "evidence": []
2026-06-22T01:34:20.2373802Z         },
2026-06-22T01:34:20.2373889Z         "unit": {
2026-06-22T01:34:20.2373974Z           "complete": true,
2026-06-22T01:34:20.2374059Z           "evidence": [
2026-06-22T01:34:20.2374142Z             {
2026-06-22T01:34:20.2374265Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2374351Z               "line": 1189
2026-06-22T01:34:20.2374437Z             },
2026-06-22T01:34:20.2374518Z             {
2026-06-22T01:34:20.2374642Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2374723Z               "line": 1213
2026-06-22T01:34:20.2374810Z             },
2026-06-22T01:34:20.2374899Z             {
2026-06-22T01:34:20.2375004Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2375101Z               "line": 1239
2026-06-22T01:34:20.2375176Z             }
2026-06-22T01:34:20.2375266Z           ]
2026-06-22T01:34:20.2375347Z         }
2026-06-22T01:34:20.2375440Z       }
2026-06-22T01:34:20.2375528Z     },
2026-06-22T01:34:20.2375610Z     {
2026-06-22T01:34:20.2375711Z       "id": "REQ-DAEMON-6",
2026-06-22T01:34:20.2377712Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-22T01:34:20.2377926Z       "requiredStages": [
2026-06-22T01:34:20.2378013Z         "impl",
2026-06-22T01:34:20.2378163Z         "unit"
2026-06-22T01:34:20.2378249Z       ],
2026-06-22T01:34:20.2378330Z       "stages": {
2026-06-22T01:34:20.2378415Z         "doc": {
2026-06-22T01:34:20.2378499Z           "complete": false,
2026-06-22T01:34:20.2378590Z           "evidence": []
2026-06-22T01:34:20.2378677Z         },
2026-06-22T01:34:20.2378762Z         "impl": {
2026-06-22T01:34:20.2378847Z           "complete": true,
2026-06-22T01:34:20.2378939Z           "evidence": [
2026-06-22T01:34:20.2379119Z             {
2026-06-22T01:34:20.2379254Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2379339Z               "line": 495
2026-06-22T01:34:20.2379425Z             },
2026-06-22T01:34:20.2379500Z             {
2026-06-22T01:34:20.2379616Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2379706Z               "line": 526
2026-06-22T01:34:20.2379791Z             },
2026-06-22T01:34:20.2379878Z             {
2026-06-22T01:34:20.2379988Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2380083Z               "line": 55
2026-06-22T01:34:20.2380154Z             },
2026-06-22T01:34:20.2380241Z             {
2026-06-22T01:34:20.2380354Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2380435Z               "line": 70
2026-06-22T01:34:20.2380528Z             },
2026-06-22T01:34:20.2380608Z             {
2026-06-22T01:34:20.2380712Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2380798Z               "line": 2020
2026-06-22T01:34:20.2380885Z             },
2026-06-22T01:34:20.2380965Z             {
2026-06-22T01:34:20.2381074Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2381159Z               "line": 2046
2026-06-22T01:34:20.2381240Z             }
2026-06-22T01:34:20.2381329Z           ]
2026-06-22T01:34:20.2381400Z         },
2026-06-22T01:34:20.2381496Z         "int": {
2026-06-22T01:34:20.2381582Z           "complete": false,
2026-06-22T01:34:20.2381667Z           "evidence": []
2026-06-22T01:34:20.2381767Z         },
2026-06-22T01:34:20.2381849Z         "unit": {
2026-06-22T01:34:20.2381940Z           "complete": true,
2026-06-22T01:34:20.2382029Z           "evidence": [
2026-06-22T01:34:20.2382111Z             {
2026-06-22T01:34:20.2382230Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2382320Z               "line": 288
2026-06-22T01:34:20.2382406Z             },
2026-06-22T01:34:20.2382488Z             {
2026-06-22T01:34:20.2382612Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2382702Z               "line": 299
2026-06-22T01:34:20.2382779Z             },
2026-06-22T01:34:20.2382864Z             {
2026-06-22T01:34:20.2382978Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2383075Z               "line": 325
2026-06-22T01:34:20.2383156Z             },
2026-06-22T01:34:20.2383245Z             {
2026-06-22T01:34:20.2383355Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2383457Z               "line": 351
2026-06-22T01:34:20.2383541Z             }
2026-06-22T01:34:20.2383631Z           ]
2026-06-22T01:34:20.2383717Z         }
2026-06-22T01:34:20.2383802Z       }
2026-06-22T01:34:20.2383890Z     },
2026-06-22T01:34:20.2383976Z     {
2026-06-22T01:34:20.2384067Z       "id": "REQ-DAEMON-7",
2026-06-22T01:34:20.2385454Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-22T01:34:20.2385555Z       "requiredStages": [
2026-06-22T01:34:20.2385755Z         "impl",
2026-06-22T01:34:20.2385841Z         "unit"
2026-06-22T01:34:20.2386023Z       ],
2026-06-22T01:34:20.2386117Z       "stages": {
2026-06-22T01:34:20.2386203Z         "doc": {
2026-06-22T01:34:20.2386300Z           "complete": false,
2026-06-22T01:34:20.2392341Z           "evidence": []
2026-06-22T01:34:20.2392475Z         },
2026-06-22T01:34:20.2392561Z         "impl": {
2026-06-22T01:34:20.2392666Z           "complete": true,
2026-06-22T01:34:20.2392762Z           "evidence": [
2026-06-22T01:34:20.2392829Z             {
2026-06-22T01:34:20.2392962Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2393048Z               "line": 545
2026-06-22T01:34:20.2393138Z             },
2026-06-22T01:34:20.2393219Z             {
2026-06-22T01:34:20.2393349Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2393443Z               "line": 610
2026-06-22T01:34:20.2393520Z             },
2026-06-22T01:34:20.2393625Z             {
2026-06-22T01:34:20.2393749Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2393829Z               "line": 89
2026-06-22T01:34:20.2393911Z             },
2026-06-22T01:34:20.2393993Z             {
2026-06-22T01:34:20.2394101Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2394186Z               "line": 1957
2026-06-22T01:34:20.2394262Z             }
2026-06-22T01:34:20.2394343Z           ]
2026-06-22T01:34:20.2394428Z         },
2026-06-22T01:34:20.2394512Z         "int": {
2026-06-22T01:34:20.2394604Z           "complete": false,
2026-06-22T01:34:20.2394690Z           "evidence": []
2026-06-22T01:34:20.2394766Z         },
2026-06-22T01:34:20.2394851Z         "unit": {
2026-06-22T01:34:20.2394932Z           "complete": true,
2026-06-22T01:34:20.2395028Z           "evidence": [
2026-06-22T01:34:20.2395108Z             {
2026-06-22T01:34:20.2395238Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2395324Z               "line": 314
2026-06-22T01:34:20.2395409Z             },
2026-06-22T01:34:20.2395495Z             {
2026-06-22T01:34:20.2395610Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2395705Z               "line": 8102
2026-06-22T01:34:20.2395790Z             }
2026-06-22T01:34:20.2395867Z           ]
2026-06-22T01:34:20.2395949Z         }
2026-06-22T01:34:20.2396034Z       }
2026-06-22T01:34:20.2396119Z     },
2026-06-22T01:34:20.2396201Z     {
2026-06-22T01:34:20.2396296Z       "id": "REQ-DAEMON-8",
2026-06-22T01:34:20.2397283Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-22T01:34:20.2397392Z       "requiredStages": [
2026-06-22T01:34:20.2397473Z         "impl",
2026-06-22T01:34:20.2397559Z         "unit"
2026-06-22T01:34:20.2397649Z       ],
2026-06-22T01:34:20.2397735Z       "stages": {
2026-06-22T01:34:20.2397822Z         "doc": {
2026-06-22T01:34:20.2397921Z           "complete": false,
2026-06-22T01:34:20.2398011Z           "evidence": []
2026-06-22T01:34:20.2398098Z         },
2026-06-22T01:34:20.2398184Z         "impl": {
2026-06-22T01:34:20.2398279Z           "complete": true,
2026-06-22T01:34:20.2398359Z           "evidence": [
2026-06-22T01:34:20.2398436Z             {
2026-06-22T01:34:20.2398565Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2398650Z               "line": 445
2026-06-22T01:34:20.2398742Z             },
2026-06-22T01:34:20.2398823Z             {
2026-06-22T01:34:20.2399027Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2399133Z               "line": 56
2026-06-22T01:34:20.2399222Z             }
2026-06-22T01:34:20.2399307Z           ]
2026-06-22T01:34:20.2399398Z         },
2026-06-22T01:34:20.2399502Z         "int": {
2026-06-22T01:34:20.2399730Z           "complete": false,
2026-06-22T01:34:20.2399816Z           "evidence": []
2026-06-22T01:34:20.2399977Z         },
2026-06-22T01:34:20.2400064Z         "unit": {
2026-06-22T01:34:20.2400145Z           "complete": true,
2026-06-22T01:34:20.2400235Z           "evidence": [
2026-06-22T01:34:20.2400320Z             {
2026-06-22T01:34:20.2400436Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2400517Z               "line": 288
2026-06-22T01:34:20.2400611Z             },
2026-06-22T01:34:20.2400689Z             {
2026-06-22T01:34:20.2400803Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:34:20.2400893Z               "line": 325
2026-06-22T01:34:20.2400984Z             }
2026-06-22T01:34:20.2401065Z           ]
2026-06-22T01:34:20.2401151Z         }
2026-06-22T01:34:20.2401232Z       }
2026-06-22T01:34:20.2401313Z     },
2026-06-22T01:34:20.2401390Z     {
2026-06-22T01:34:20.2401479Z       "id": "REQ-DAEMON-9",
2026-06-22T01:34:20.2403841Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-22T01:34:20.2403956Z       "requiredStages": [
2026-06-22T01:34:20.2404045Z         "impl",
2026-06-22T01:34:20.2404132Z         "unit"
2026-06-22T01:34:20.2404205Z       ],
2026-06-22T01:34:20.2404300Z       "stages": {
2026-06-22T01:34:20.2404384Z         "doc": {
2026-06-22T01:34:20.2404466Z           "complete": false,
2026-06-22T01:34:20.2404577Z           "evidence": []
2026-06-22T01:34:20.2404657Z         },
2026-06-22T01:34:20.2404741Z         "impl": {
2026-06-22T01:34:20.2404832Z           "complete": true,
2026-06-22T01:34:20.2404918Z           "evidence": [
2026-06-22T01:34:20.2405002Z             {
2026-06-22T01:34:20.2405134Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2405226Z               "line": 276
2026-06-22T01:34:20.2405308Z             },
2026-06-22T01:34:20.2405392Z             {
2026-06-22T01:34:20.2405497Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2405588Z               "line": 1308
2026-06-22T01:34:20.2405673Z             },
2026-06-22T01:34:20.2405755Z             {
2026-06-22T01:34:20.2405870Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2405956Z               "line": 197
2026-06-22T01:34:20.2406045Z             },
2026-06-22T01:34:20.2406137Z             {
2026-06-22T01:34:20.2406250Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2406350Z               "line": 344
2026-06-22T01:34:20.2406432Z             },
2026-06-22T01:34:20.2406514Z             {
2026-06-22T01:34:20.2406628Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2406723Z               "line": 381
2026-06-22T01:34:20.2406810Z             },
2026-06-22T01:34:20.2406885Z             {
2026-06-22T01:34:20.2406994Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2407086Z               "line": 2075
2026-06-22T01:34:20.2407172Z             }
2026-06-22T01:34:20.2407251Z           ]
2026-06-22T01:34:20.2407333Z         },
2026-06-22T01:34:20.2407420Z         "int": {
2026-06-22T01:34:20.2407505Z           "complete": false,
2026-06-22T01:34:20.2407594Z           "evidence": []
2026-06-22T01:34:20.2407679Z         },
2026-06-22T01:34:20.2407843Z         "unit": {
2026-06-22T01:34:20.2407928Z           "complete": true,
2026-06-22T01:34:20.2408013Z           "evidence": [
2026-06-22T01:34:20.2408195Z             {
2026-06-22T01:34:20.2408309Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2408396Z               "line": 1158
2026-06-22T01:34:20.2408477Z             },
2026-06-22T01:34:20.2408566Z             {
2026-06-22T01:34:20.2408672Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2408763Z               "line": 10580
2026-06-22T01:34:20.2408849Z             }
2026-06-22T01:34:20.2408929Z           ]
2026-06-22T01:34:20.2409797Z         }
2026-06-22T01:34:20.2409877Z       }
2026-06-22T01:34:20.2409958Z     },
2026-06-22T01:34:20.2410034Z     {
2026-06-22T01:34:20.2410123Z       "id": "REQ-DOCS-1",
2026-06-22T01:34:20.2410324Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-22T01:34:20.2410415Z       "requiredStages": [
2026-06-22T01:34:20.2410514Z         "doc",
2026-06-22T01:34:20.2410599Z         "impl"
2026-06-22T01:34:20.2410686Z       ],
2026-06-22T01:34:20.2410781Z       "stages": {
2026-06-22T01:34:20.2410861Z         "doc": {
2026-06-22T01:34:20.2410958Z           "complete": true,
2026-06-22T01:34:20.2411048Z           "evidence": [
2026-06-22T01:34:20.2411133Z             {
2026-06-22T01:34:20.2411244Z               "path": "docs-site/src/index.md",
2026-06-22T01:34:20.2411329Z               "line": 50
2026-06-22T01:34:20.2411410Z             }
2026-06-22T01:34:20.2411491Z           ]
2026-06-22T01:34:20.2411573Z         },
2026-06-22T01:34:20.2411658Z         "impl": {
2026-06-22T01:34:20.2411753Z           "complete": true,
2026-06-22T01:34:20.2411834Z           "evidence": [
2026-06-22T01:34:20.2411922Z             {
2026-06-22T01:34:20.2412054Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T01:34:20.2412139Z               "line": 12
2026-06-22T01:34:20.2412227Z             },
2026-06-22T01:34:20.2412307Z             {
2026-06-22T01:34:20.2412417Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.2412498Z               "line": 14
2026-06-22T01:34:20.2412589Z             }
2026-06-22T01:34:20.2412664Z           ]
2026-06-22T01:34:20.2412754Z         },
2026-06-22T01:34:20.2412839Z         "int": {
2026-06-22T01:34:20.2412920Z           "complete": false,
2026-06-22T01:34:20.2413000Z           "evidence": []
2026-06-22T01:34:20.2413080Z         },
2026-06-22T01:34:20.2413166Z         "unit": {
2026-06-22T01:34:20.2413258Z           "complete": false,
2026-06-22T01:34:20.2413338Z           "evidence": []
2026-06-22T01:34:20.2413423Z         }
2026-06-22T01:34:20.2413506Z       }
2026-06-22T01:34:20.2413587Z     },
2026-06-22T01:34:20.2413667Z     {
2026-06-22T01:34:20.2413752Z       "id": "REQ-DOCS-2",
2026-06-22T01:34:20.2413911Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-22T01:34:20.2414010Z       "requiredStages": [
2026-06-22T01:34:20.2414096Z         "doc",
2026-06-22T01:34:20.2414178Z         "int"
2026-06-22T01:34:20.2414268Z       ],
2026-06-22T01:34:20.2414349Z       "stages": {
2026-06-22T01:34:20.2414425Z         "doc": {
2026-06-22T01:34:20.2414502Z           "complete": true,
2026-06-22T01:34:20.2414592Z           "evidence": [
2026-06-22T01:34:20.2414678Z             {
2026-06-22T01:34:20.2414860Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-22T01:34:20.2414944Z               "line": 3
2026-06-22T01:34:20.2415026Z             },
2026-06-22T01:34:20.2415113Z             {
2026-06-22T01:34:20.2415240Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-22T01:34:20.2415325Z               "line": 3
2026-06-22T01:34:20.2415406Z             },
2026-06-22T01:34:20.2415492Z             {
2026-06-22T01:34:20.2415623Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T01:34:20.2415709Z               "line": 3
2026-06-22T01:34:20.2415786Z             }
2026-06-22T01:34:20.2415863Z           ]
2026-06-22T01:34:20.2416067Z         },
2026-06-22T01:34:20.2416158Z         "impl": {
2026-06-22T01:34:20.2416248Z           "complete": false,
2026-06-22T01:34:20.2416430Z           "evidence": []
2026-06-22T01:34:20.2416516Z         },
2026-06-22T01:34:20.2416600Z         "int": {
2026-06-22T01:34:20.2416688Z           "complete": true,
2026-06-22T01:34:20.2416778Z           "evidence": [
2026-06-22T01:34:20.2416868Z             {
2026-06-22T01:34:20.2416992Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T01:34:20.2417074Z               "line": 14
2026-06-22T01:34:20.2417159Z             }
2026-06-22T01:34:20.2417254Z           ]
2026-06-22T01:34:20.2417336Z         },
2026-06-22T01:34:20.2417422Z         "unit": {
2026-06-22T01:34:20.2417507Z           "complete": false,
2026-06-22T01:34:20.2417593Z           "evidence": []
2026-06-22T01:34:20.2417680Z         }
2026-06-22T01:34:20.2417760Z       }
2026-06-22T01:34:20.2417846Z     },
2026-06-22T01:34:20.2417922Z     {
2026-06-22T01:34:20.2418023Z       "id": "REQ-DOCS-3",
2026-06-22T01:34:20.2418264Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-22T01:34:20.2418360Z       "requiredStages": [
2026-06-22T01:34:20.2418446Z         "doc"
2026-06-22T01:34:20.2418531Z       ],
2026-06-22T01:34:20.2418617Z       "stages": {
2026-06-22T01:34:20.2418684Z         "doc": {
2026-06-22T01:34:20.2418784Z           "complete": true,
2026-06-22T01:34:20.2418865Z           "evidence": [
2026-06-22T01:34:20.2419027Z             {
2026-06-22T01:34:20.2419136Z               "path": "docs-site/src/index.md",
2026-06-22T01:34:20.2419213Z               "line": 42
2026-06-22T01:34:20.2419300Z             }
2026-06-22T01:34:20.2419384Z           ]
2026-06-22T01:34:20.2419465Z         },
2026-06-22T01:34:20.2419552Z         "impl": {
2026-06-22T01:34:20.2419648Z           "complete": false,
2026-06-22T01:34:20.2419728Z           "evidence": []
2026-06-22T01:34:20.2419814Z         },
2026-06-22T01:34:20.2419891Z         "int": {
2026-06-22T01:34:20.2419995Z           "complete": false,
2026-06-22T01:34:20.2420076Z           "evidence": []
2026-06-22T01:34:20.2420166Z         },
2026-06-22T01:34:20.2420249Z         "unit": {
2026-06-22T01:34:20.2420342Z           "complete": false,
2026-06-22T01:34:20.2420419Z           "evidence": []
2026-06-22T01:34:20.2420504Z         }
2026-06-22T01:34:20.2420585Z       }
2026-06-22T01:34:20.2420664Z     },
2026-06-22T01:34:20.2420740Z     {
2026-06-22T01:34:20.2420831Z       "id": "REQ-DOCS-4",
2026-06-22T01:34:20.2421021Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-22T01:34:20.2421111Z       "requiredStages": [
2026-06-22T01:34:20.2421198Z         "doc",
2026-06-22T01:34:20.2421279Z         "impl",
2026-06-22T01:34:20.2421360Z         "unit"
2026-06-22T01:34:20.2421435Z       ],
2026-06-22T01:34:20.2421528Z       "stages": {
2026-06-22T01:34:20.2421613Z         "doc": {
2026-06-22T01:34:20.2421703Z           "complete": true,
2026-06-22T01:34:20.2421804Z           "evidence": [
2026-06-22T01:34:20.2421885Z             {
2026-06-22T01:34:20.2421989Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-22T01:34:20.2422085Z               "line": 35
2026-06-22T01:34:20.2422162Z             }
2026-06-22T01:34:20.2422247Z           ]
2026-06-22T01:34:20.2422328Z         },
2026-06-22T01:34:20.2422404Z         "impl": {
2026-06-22T01:34:20.2422496Z           "complete": true,
2026-06-22T01:34:20.2422581Z           "evidence": [
2026-06-22T01:34:20.2422666Z             {
2026-06-22T01:34:20.2422797Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.2422881Z               "line": 746
2026-06-22T01:34:20.2422967Z             },
2026-06-22T01:34:20.2423054Z             {
2026-06-22T01:34:20.2423154Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.2423238Z               "line": 15
2026-06-22T01:34:20.2423323Z             }
2026-06-22T01:34:20.2423404Z           ]
2026-06-22T01:34:20.2423485Z         },
2026-06-22T01:34:20.2423673Z         "int": {
2026-06-22T01:34:20.2423765Z           "complete": false,
2026-06-22T01:34:20.2423946Z           "evidence": []
2026-06-22T01:34:20.2424036Z         },
2026-06-22T01:34:20.2424118Z         "unit": {
2026-06-22T01:34:20.2424208Z           "complete": true,
2026-06-22T01:34:20.2424307Z           "evidence": [
2026-06-22T01:34:20.2424386Z             {
2026-06-22T01:34:20.2424514Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.2424599Z               "line": 1682
2026-06-22T01:34:20.2424680Z             }
2026-06-22T01:34:20.2424762Z           ]
2026-06-22T01:34:20.2424852Z         }
2026-06-22T01:34:20.2424937Z       }
2026-06-22T01:34:20.2425020Z     },
2026-06-22T01:34:20.2425100Z     {
2026-06-22T01:34:20.2425195Z       "id": "REQ-DOCS-5",
2026-06-22T01:34:20.2425382Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-22T01:34:20.2425476Z       "requiredStages": [
2026-06-22T01:34:20.2425567Z         "impl",
2026-06-22T01:34:20.2425664Z         "int"
2026-06-22T01:34:20.2425749Z       ],
2026-06-22T01:34:20.2425833Z       "stages": {
2026-06-22T01:34:20.2425923Z         "doc": {
2026-06-22T01:34:20.2426014Z           "complete": false,
2026-06-22T01:34:20.2426108Z           "evidence": []
2026-06-22T01:34:20.2426197Z         },
2026-06-22T01:34:20.2426284Z         "impl": {
2026-06-22T01:34:20.2426375Z           "complete": true,
2026-06-22T01:34:20.2426465Z           "evidence": [
2026-06-22T01:34:20.2426545Z             {
2026-06-22T01:34:20.2426656Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.2426742Z               "line": 747
2026-06-22T01:34:20.2426841Z             },
2026-06-22T01:34:20.2426923Z             {
2026-06-22T01:34:20.2427028Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.2427114Z               "line": 113
2026-06-22T01:34:20.2427199Z             }
2026-06-22T01:34:20.2427281Z           ]
2026-06-22T01:34:20.2427357Z         },
2026-06-22T01:34:20.2427443Z         "int": {
2026-06-22T01:34:20.2427542Z           "complete": true,
2026-06-22T01:34:20.2427634Z           "evidence": [
2026-06-22T01:34:20.2427714Z             {
2026-06-22T01:34:20.2427819Z               "path": ".github/workflows/ci.yml",
2026-06-22T01:34:20.2427911Z               "line": 211
2026-06-22T01:34:20.2427986Z             },
2026-06-22T01:34:20.2428072Z             {
2026-06-22T01:34:20.2428192Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.2428273Z               "line": 1719
2026-06-22T01:34:20.2428358Z             }
2026-06-22T01:34:20.2428439Z           ]
2026-06-22T01:34:20.2428536Z         },
2026-06-22T01:34:20.2428621Z         "unit": {
2026-06-22T01:34:20.2428710Z           "complete": false,
2026-06-22T01:34:20.2428809Z           "evidence": []
2026-06-22T01:34:20.2428891Z         }
2026-06-22T01:34:20.2429062Z       }
2026-06-22T01:34:20.2429138Z     },
2026-06-22T01:34:20.2429211Z     {
2026-06-22T01:34:20.2429312Z       "id": "REQ-DOCS-6",
2026-06-22T01:34:20.2429641Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-22T01:34:20.2429744Z       "requiredStages": [
2026-06-22T01:34:20.2429826Z         "impl",
2026-06-22T01:34:20.2429912Z         "unit",
2026-06-22T01:34:20.2429993Z         "int"
2026-06-22T01:34:20.2430078Z       ],
2026-06-22T01:34:20.2430156Z       "stages": {
2026-06-22T01:34:20.2430245Z         "doc": {
2026-06-22T01:34:20.2430345Z           "complete": true,
2026-06-22T01:34:20.2430427Z           "evidence": [
2026-06-22T01:34:20.2430513Z             {
2026-06-22T01:34:20.2430641Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T01:34:20.2430727Z               "line": 4
2026-06-22T01:34:20.2430804Z             }
2026-06-22T01:34:20.2430889Z           ]
2026-06-22T01:34:20.2430969Z         },
2026-06-22T01:34:20.2431054Z         "impl": {
2026-06-22T01:34:20.2431145Z           "complete": true,
2026-06-22T01:34:20.2431338Z           "evidence": [
2026-06-22T01:34:20.2431424Z             {
2026-06-22T01:34:20.2431624Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2431720Z               "line": 5240
2026-06-22T01:34:20.2431801Z             }
2026-06-22T01:34:20.2431882Z           ]
2026-06-22T01:34:20.2431972Z         },
2026-06-22T01:34:20.2432054Z         "int": {
2026-06-22T01:34:20.2432149Z           "complete": true,
2026-06-22T01:34:20.2432239Z           "evidence": [
2026-06-22T01:34:20.2432320Z             {
2026-06-22T01:34:20.2432436Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T01:34:20.2432522Z               "line": 39
2026-06-22T01:34:20.2432606Z             }
2026-06-22T01:34:20.2432679Z           ]
2026-06-22T01:34:20.2432760Z         },
2026-06-22T01:34:20.2432850Z         "unit": {
2026-06-22T01:34:20.2432936Z           "complete": true,
2026-06-22T01:34:20.2433028Z           "evidence": [
2026-06-22T01:34:20.2433108Z             {
2026-06-22T01:34:20.2433226Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2433309Z               "line": 10742
2026-06-22T01:34:20.2433409Z             }
2026-06-22T01:34:20.2433493Z           ]
2026-06-22T01:34:20.2433585Z         }
2026-06-22T01:34:20.2433676Z       }
2026-06-22T01:34:20.2433756Z     },
2026-06-22T01:34:20.2433846Z     {
2026-06-22T01:34:20.2433936Z       "id": "REQ-ELEVATE-1",
2026-06-22T01:34:20.2437058Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-22T01:34:20.2437193Z       "requiredStages": [
2026-06-22T01:34:20.2437278Z         "doc",
2026-06-22T01:34:20.2437363Z         "impl",
2026-06-22T01:34:20.2437449Z         "unit"
2026-06-22T01:34:20.2437522Z       ],
2026-06-22T01:34:20.2437603Z       "stages": {
2026-06-22T01:34:20.2437688Z         "doc": {
2026-06-22T01:34:20.2437783Z           "complete": true,
2026-06-22T01:34:20.2437874Z           "evidence": [
2026-06-22T01:34:20.2437950Z             {
2026-06-22T01:34:20.2438064Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.2438170Z               "line": 687
2026-06-22T01:34:20.2438251Z             }
2026-06-22T01:34:20.2438336Z           ]
2026-06-22T01:34:20.2438427Z         },
2026-06-22T01:34:20.2438514Z         "impl": {
2026-06-22T01:34:20.2438598Z           "complete": true,
2026-06-22T01:34:20.2438698Z           "evidence": [
2026-06-22T01:34:20.2438781Z             {
2026-06-22T01:34:20.2438889Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2439072Z               "line": 3572
2026-06-22T01:34:20.2439162Z             },
2026-06-22T01:34:20.2439242Z             {
2026-06-22T01:34:20.2439341Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2439456Z               "line": 3617
2026-06-22T01:34:20.2439529Z             },
2026-06-22T01:34:20.2439622Z             {
2026-06-22T01:34:20.2439723Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2439814Z               "line": 3679
2026-06-22T01:34:20.2439900Z             },
2026-06-22T01:34:20.2439985Z             {
2026-06-22T01:34:20.2440215Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.2440290Z               "line": 92
2026-06-22T01:34:20.2440491Z             },
2026-06-22T01:34:20.2440572Z             {
2026-06-22T01:34:20.2440687Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.2440773Z               "line": 148
2026-06-22T01:34:20.2440853Z             }
2026-06-22T01:34:20.2440938Z           ]
2026-06-22T01:34:20.2441026Z         },
2026-06-22T01:34:20.2441111Z         "int": {
2026-06-22T01:34:20.2441196Z           "complete": false,
2026-06-22T01:34:20.2441287Z           "evidence": []
2026-06-22T01:34:20.2441374Z         },
2026-06-22T01:34:20.2441458Z         "unit": {
2026-06-22T01:34:20.2441553Z           "complete": true,
2026-06-22T01:34:20.2441639Z           "evidence": [
2026-06-22T01:34:20.2441725Z             {
2026-06-22T01:34:20.2441832Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.2441926Z               "line": 442
2026-06-22T01:34:20.2442013Z             },
2026-06-22T01:34:20.2442095Z             {
2026-06-22T01:34:20.2442203Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.2442280Z               "line": 460
2026-06-22T01:34:20.2442366Z             }
2026-06-22T01:34:20.2442447Z           ]
2026-06-22T01:34:20.2442537Z         }
2026-06-22T01:34:20.2442624Z       }
2026-06-22T01:34:20.2442700Z     },
2026-06-22T01:34:20.2442786Z     {
2026-06-22T01:34:20.2442895Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-22T01:34:20.2444657Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-22T01:34:20.2444770Z       "requiredStages": [
2026-06-22T01:34:20.2444847Z         "doc",
2026-06-22T01:34:20.2444933Z         "impl",
2026-06-22T01:34:20.2445014Z         "unit"
2026-06-22T01:34:20.2445099Z       ],
2026-06-22T01:34:20.2445186Z       "stages": {
2026-06-22T01:34:20.2445271Z         "doc": {
2026-06-22T01:34:20.2445366Z           "complete": true,
2026-06-22T01:34:20.2445452Z           "evidence": [
2026-06-22T01:34:20.2445535Z             {
2026-06-22T01:34:20.2445630Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.2445724Z               "line": 711
2026-06-22T01:34:20.2445815Z             }
2026-06-22T01:34:20.2445901Z           ]
2026-06-22T01:34:20.2445982Z         },
2026-06-22T01:34:20.2446067Z         "impl": {
2026-06-22T01:34:20.2446155Z           "complete": true,
2026-06-22T01:34:20.2446239Z           "evidence": [
2026-06-22T01:34:20.2446334Z             {
2026-06-22T01:34:20.2446445Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2446545Z               "line": 1721
2026-06-22T01:34:20.2446635Z             },
2026-06-22T01:34:20.2446721Z             {
2026-06-22T01:34:20.2446827Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2446911Z               "line": 3125
2026-06-22T01:34:20.2446996Z             },
2026-06-22T01:34:20.2447086Z             {
2026-06-22T01:34:20.2447191Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2447280Z               "line": 3134
2026-06-22T01:34:20.2447365Z             }
2026-06-22T01:34:20.2447457Z           ]
2026-06-22T01:34:20.2447534Z         },
2026-06-22T01:34:20.2447623Z         "int": {
2026-06-22T01:34:20.2447723Z           "complete": false,
2026-06-22T01:34:20.2447805Z           "evidence": []
2026-06-22T01:34:20.2447891Z         },
2026-06-22T01:34:20.2447976Z         "unit": {
2026-06-22T01:34:20.2448148Z           "complete": true,
2026-06-22T01:34:20.2448238Z           "evidence": [
2026-06-22T01:34:20.2448329Z             {
2026-06-22T01:34:20.2448515Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2448601Z               "line": 7950
2026-06-22T01:34:20.2448687Z             },
2026-06-22T01:34:20.2448768Z             {
2026-06-22T01:34:20.2448882Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2449031Z               "line": 7991
2026-06-22T01:34:20.2449125Z             }
2026-06-22T01:34:20.2449211Z           ]
2026-06-22T01:34:20.2449298Z         }
2026-06-22T01:34:20.2449379Z       }
2026-06-22T01:34:20.2449468Z     },
2026-06-22T01:34:20.2449555Z     {
2026-06-22T01:34:20.2449661Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-22T01:34:20.2454444Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-22T01:34:20.2454628Z       "requiredStages": [
2026-06-22T01:34:20.2454710Z         "doc",
2026-06-22T01:34:20.2454801Z         "impl",
2026-06-22T01:34:20.2454882Z         "unit",
2026-06-22T01:34:20.2454961Z         "int"
2026-06-22T01:34:20.2455041Z       ],
2026-06-22T01:34:20.2455133Z       "stages": {
2026-06-22T01:34:20.2455217Z         "doc": {
2026-06-22T01:34:20.2455316Z           "complete": true,
2026-06-22T01:34:20.2455412Z           "evidence": [
2026-06-22T01:34:20.2455484Z             {
2026-06-22T01:34:20.2455588Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.2455669Z               "line": 163
2026-06-22T01:34:20.2455756Z             }
2026-06-22T01:34:20.2455866Z           ]
2026-06-22T01:34:20.2455945Z         },
2026-06-22T01:34:20.2456022Z         "impl": {
2026-06-22T01:34:20.2456127Z           "complete": true,
2026-06-22T01:34:20.2456218Z           "evidence": [
2026-06-22T01:34:20.2456303Z             {
2026-06-22T01:34:20.2456438Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:34:20.2456528Z               "line": 105
2026-06-22T01:34:20.2456604Z             },
2026-06-22T01:34:20.2456690Z             {
2026-06-22T01:34:20.2456790Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2456885Z               "line": 7219
2026-06-22T01:34:20.2456971Z             }
2026-06-22T01:34:20.2457058Z           ]
2026-06-22T01:34:20.2457142Z         },
2026-06-22T01:34:20.2457228Z         "int": {
2026-06-22T01:34:20.2457325Z           "complete": true,
2026-06-22T01:34:20.2457410Z           "evidence": [
2026-06-22T01:34:20.2457495Z             {
2026-06-22T01:34:20.2457599Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2457811Z               "line": 7384
2026-06-22T01:34:20.2457901Z             }
2026-06-22T01:34:20.2457983Z           ]
2026-06-22T01:34:20.2458155Z         },
2026-06-22T01:34:20.2458240Z         "unit": {
2026-06-22T01:34:20.2458337Z           "complete": true,
2026-06-22T01:34:20.2458423Z           "evidence": [
2026-06-22T01:34:20.2458512Z             {
2026-06-22T01:34:20.2458608Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2458694Z               "line": 7355
2026-06-22T01:34:20.2458784Z             }
2026-06-22T01:34:20.2458865Z           ]
2026-06-22T01:34:20.2459032Z         }
2026-06-22T01:34:20.2459118Z       }
2026-06-22T01:34:20.2459199Z     },
2026-06-22T01:34:20.2459314Z     {
2026-06-22T01:34:20.2459452Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-22T01:34:20.2460743Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-22T01:34:20.2460863Z       "requiredStages": [
2026-06-22T01:34:20.2460949Z         "impl",
2026-06-22T01:34:20.2461024Z         "unit"
2026-06-22T01:34:20.2461109Z       ],
2026-06-22T01:34:20.2461202Z       "stages": {
2026-06-22T01:34:20.2461287Z         "doc": {
2026-06-22T01:34:20.2461382Z           "complete": false,
2026-06-22T01:34:20.2461468Z           "evidence": []
2026-06-22T01:34:20.2461559Z         },
2026-06-22T01:34:20.2461649Z         "impl": {
2026-06-22T01:34:20.2461730Z           "complete": true,
2026-06-22T01:34:20.2461827Z           "evidence": [
2026-06-22T01:34:20.2461902Z             {
2026-06-22T01:34:20.2462011Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2462102Z               "line": 3165
2026-06-22T01:34:20.2462217Z             }
2026-06-22T01:34:20.2462302Z           ]
2026-06-22T01:34:20.2462383Z         },
2026-06-22T01:34:20.2462494Z         "int": {
2026-06-22T01:34:20.2462583Z           "complete": false,
2026-06-22T01:34:20.2462668Z           "evidence": []
2026-06-22T01:34:20.2462754Z         },
2026-06-22T01:34:20.2462845Z         "unit": {
2026-06-22T01:34:20.2462938Z           "complete": true,
2026-06-22T01:34:20.2463014Z           "evidence": [
2026-06-22T01:34:20.2463105Z             {
2026-06-22T01:34:20.2463206Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2463300Z               "line": 7331
2026-06-22T01:34:20.2463376Z             }
2026-06-22T01:34:20.2463468Z           ]
2026-06-22T01:34:20.2463544Z         }
2026-06-22T01:34:20.2463624Z       }
2026-06-22T01:34:20.2463700Z     },
2026-06-22T01:34:20.2463787Z     {
2026-06-22T01:34:20.2463882Z       "id": "REQ-EP-1",
2026-06-22T01:34:20.2464015Z       "title": "Day-one endpoint types; open type system",
2026-06-22T01:34:20.2464121Z       "requiredStages": [
2026-06-22T01:34:20.2464207Z         "impl",
2026-06-22T01:34:20.2464296Z         "unit"
2026-06-22T01:34:20.2464384Z       ],
2026-06-22T01:34:20.2464464Z       "stages": {
2026-06-22T01:34:20.2464554Z         "doc": {
2026-06-22T01:34:20.2464645Z           "complete": false,
2026-06-22T01:34:20.2464732Z           "evidence": []
2026-06-22T01:34:20.2464817Z         },
2026-06-22T01:34:20.2464898Z         "impl": {
2026-06-22T01:34:20.2464989Z           "complete": true,
2026-06-22T01:34:20.2465075Z           "evidence": [
2026-06-22T01:34:20.2465164Z             {
2026-06-22T01:34:20.2465289Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2465385Z               "line": 77
2026-06-22T01:34:20.2465474Z             },
2026-06-22T01:34:20.2465559Z             {
2026-06-22T01:34:20.2465683Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2465768Z               "line": 94
2026-06-22T01:34:20.2465953Z             }
2026-06-22T01:34:20.2466039Z           ]
2026-06-22T01:34:20.2466125Z         },
2026-06-22T01:34:20.2466210Z         "int": {
2026-06-22T01:34:20.2466382Z           "complete": false,
2026-06-22T01:34:20.2466482Z           "evidence": []
2026-06-22T01:34:20.2466568Z         },
2026-06-22T01:34:20.2466655Z         "unit": {
2026-06-22T01:34:20.2466750Z           "complete": true,
2026-06-22T01:34:20.2466844Z           "evidence": [
2026-06-22T01:34:20.2466936Z             {
2026-06-22T01:34:20.2467049Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2467140Z               "line": 161
2026-06-22T01:34:20.2467221Z             },
2026-06-22T01:34:20.2467308Z             {
2026-06-22T01:34:20.2467416Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2467512Z               "line": 178
2026-06-22T01:34:20.2467599Z             }
2026-06-22T01:34:20.2467684Z           ]
2026-06-22T01:34:20.2467769Z         }
2026-06-22T01:34:20.2467856Z       }
2026-06-22T01:34:20.2467947Z     },
2026-06-22T01:34:20.2468031Z     {
2026-06-22T01:34:20.2468131Z       "id": "REQ-EP-2",
2026-06-22T01:34:20.2471862Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-22T01:34:20.2472004Z       "requiredStages": [
2026-06-22T01:34:20.2472105Z         "impl",
2026-06-22T01:34:20.2472190Z         "unit"
2026-06-22T01:34:20.2472271Z       ],
2026-06-22T01:34:20.2472362Z       "stages": {
2026-06-22T01:34:20.2472443Z         "doc": {
2026-06-22T01:34:20.2472548Z           "complete": false,
2026-06-22T01:34:20.2472633Z           "evidence": []
2026-06-22T01:34:20.2472716Z         },
2026-06-22T01:34:20.2472805Z         "impl": {
2026-06-22T01:34:20.2472896Z           "complete": true,
2026-06-22T01:34:20.2472982Z           "evidence": [
2026-06-22T01:34:20.2473068Z             {
2026-06-22T01:34:20.2473205Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2473290Z               "line": 114
2026-06-22T01:34:20.2473395Z             },
2026-06-22T01:34:20.2473475Z             {
2026-06-22T01:34:20.2473607Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2473698Z               "line": 131
2026-06-22T01:34:20.2473790Z             },
2026-06-22T01:34:20.2473874Z             {
2026-06-22T01:34:20.2473990Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2474085Z               "line": 138
2026-06-22T01:34:20.2474161Z             }
2026-06-22T01:34:20.2474246Z           ]
2026-06-22T01:34:20.2474328Z         },
2026-06-22T01:34:20.2474414Z         "int": {
2026-06-22T01:34:20.2474513Z           "complete": false,
2026-06-22T01:34:20.2474600Z           "evidence": []
2026-06-22T01:34:20.2474690Z         },
2026-06-22T01:34:20.2474776Z         "unit": {
2026-06-22T01:34:20.2474871Z           "complete": true,
2026-06-22T01:34:20.2474953Z           "evidence": [
2026-06-22T01:34:20.2475038Z             {
2026-06-22T01:34:20.2475157Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2475249Z               "line": 190
2026-06-22T01:34:20.2475325Z             },
2026-06-22T01:34:20.2475410Z             {
2026-06-22T01:34:20.2475535Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2475621Z               "line": 208
2026-06-22T01:34:20.2475710Z             },
2026-06-22T01:34:20.2475792Z             {
2026-06-22T01:34:20.2475903Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:34:20.2475988Z               "line": 221
2026-06-22T01:34:20.2476067Z             }
2026-06-22T01:34:20.2476157Z           ]
2026-06-22T01:34:20.2476239Z         }
2026-06-22T01:34:20.2476333Z       }
2026-06-22T01:34:20.2476412Z     },
2026-06-22T01:34:20.2476489Z     {
2026-06-22T01:34:20.2476590Z       "id": "REQ-EP-3",
2026-06-22T01:34:20.2476775Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-22T01:34:20.2476876Z       "requiredStages": [
2026-06-22T01:34:20.2476961Z         "impl",
2026-06-22T01:34:20.2477215Z         "unit"
2026-06-22T01:34:20.2477295Z       ],
2026-06-22T01:34:20.2477380Z       "stages": {
2026-06-22T01:34:20.2477558Z         "doc": {
2026-06-22T01:34:20.2477648Z           "complete": false,
2026-06-22T01:34:20.2477733Z           "evidence": []
2026-06-22T01:34:20.2477816Z         },
2026-06-22T01:34:20.2477906Z         "impl": {
2026-06-22T01:34:20.2477991Z           "complete": true,
2026-06-22T01:34:20.2478077Z           "evidence": [
2026-06-22T01:34:20.2478164Z             {
2026-06-22T01:34:20.2478277Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:34:20.2478358Z               "line": 31
2026-06-22T01:34:20.2478441Z             },
2026-06-22T01:34:20.2478526Z             {
2026-06-22T01:34:20.2478648Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:34:20.2478733Z               "line": 49
2026-06-22T01:34:20.2478805Z             }
2026-06-22T01:34:20.2478890Z           ]
2026-06-22T01:34:20.2479060Z         },
2026-06-22T01:34:20.2479152Z         "int": {
2026-06-22T01:34:20.2479242Z           "complete": false,
2026-06-22T01:34:20.2479399Z           "evidence": []
2026-06-22T01:34:20.2479490Z         },
2026-06-22T01:34:20.2479585Z         "unit": {
2026-06-22T01:34:20.2479666Z           "complete": true,
2026-06-22T01:34:20.2479748Z           "evidence": [
2026-06-22T01:34:20.2479833Z             {
2026-06-22T01:34:20.2479956Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:34:20.2480044Z               "line": 156
2026-06-22T01:34:20.2480129Z             },
2026-06-22T01:34:20.2480215Z             {
2026-06-22T01:34:20.2480324Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:34:20.2480406Z               "line": 164
2026-06-22T01:34:20.2480491Z             },
2026-06-22T01:34:20.2480576Z             {
2026-06-22T01:34:20.2480683Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:34:20.2480764Z               "line": 177
2026-06-22T01:34:20.2480848Z             },
2026-06-22T01:34:20.2480935Z             {
2026-06-22T01:34:20.2481055Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:34:20.2481139Z               "line": 200
2026-06-22T01:34:20.2481220Z             },
2026-06-22T01:34:20.2481303Z             {
2026-06-22T01:34:20.2481422Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:34:20.2481510Z               "line": 216
2026-06-22T01:34:20.2481591Z             },
2026-06-22T01:34:20.2481668Z             {
2026-06-22T01:34:20.2481778Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:34:20.2481853Z               "line": 233
2026-06-22T01:34:20.2481944Z             }
2026-06-22T01:34:20.2482021Z           ]
2026-06-22T01:34:20.2482107Z         }
2026-06-22T01:34:20.2482187Z       }
2026-06-22T01:34:20.2482274Z     },
2026-06-22T01:34:20.2482360Z     {
2026-06-22T01:34:20.2482445Z       "id": "REQ-EP-4",
2026-06-22T01:34:20.2482593Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-22T01:34:20.2482693Z       "requiredStages": [
2026-06-22T01:34:20.2482774Z         "impl",
2026-06-22T01:34:20.2482860Z         "unit"
2026-06-22T01:34:20.2482947Z       ],
2026-06-22T01:34:20.2483036Z       "stages": {
2026-06-22T01:34:20.2483113Z         "doc": {
2026-06-22T01:34:20.2483213Z           "complete": false,
2026-06-22T01:34:20.2483290Z           "evidence": []
2026-06-22T01:34:20.2483375Z         },
2026-06-22T01:34:20.2483460Z         "impl": {
2026-06-22T01:34:20.2483552Z           "complete": true,
2026-06-22T01:34:20.2483643Z           "evidence": [
2026-06-22T01:34:20.2483727Z             {
2026-06-22T01:34:20.2483845Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2483937Z               "line": 778
2026-06-22T01:34:20.2484016Z             },
2026-06-22T01:34:20.2484101Z             {
2026-06-22T01:34:20.2484215Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2484297Z               "line": 1221
2026-06-22T01:34:20.2484482Z             },
2026-06-22T01:34:20.2484559Z             {
2026-06-22T01:34:20.2484664Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2484850Z               "line": 2421
2026-06-22T01:34:20.2484936Z             },
2026-06-22T01:34:20.2485021Z             {
2026-06-22T01:34:20.2485126Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2485213Z               "line": 125
2026-06-22T01:34:20.2485298Z             },
2026-06-22T01:34:20.2485383Z             {
2026-06-22T01:34:20.2485489Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2485570Z               "line": 715
2026-06-22T01:34:20.2485656Z             },
2026-06-22T01:34:20.2485741Z             {
2026-06-22T01:34:20.2485843Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2485932Z               "line": 864
2026-06-22T01:34:20.2486013Z             },
2026-06-22T01:34:20.2486100Z             {
2026-06-22T01:34:20.2486219Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2486318Z               "line": 321
2026-06-22T01:34:20.2486405Z             },
2026-06-22T01:34:20.2486496Z             {
2026-06-22T01:34:20.2486604Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2486684Z               "line": 508
2026-06-22T01:34:20.2486775Z             },
2026-06-22T01:34:20.2486846Z             {
2026-06-22T01:34:20.2486968Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2487054Z               "line": 1334
2026-06-22T01:34:20.2487135Z             }
2026-06-22T01:34:20.2487217Z           ]
2026-06-22T01:34:20.2487302Z         },
2026-06-22T01:34:20.2487387Z         "int": {
2026-06-22T01:34:20.2487470Z           "complete": false,
2026-06-22T01:34:20.2487555Z           "evidence": []
2026-06-22T01:34:20.2487640Z         },
2026-06-22T01:34:20.2487717Z         "unit": {
2026-06-22T01:34:20.2487808Z           "complete": true,
2026-06-22T01:34:20.2487894Z           "evidence": [
2026-06-22T01:34:20.2487978Z             {
2026-06-22T01:34:20.2488080Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2488165Z               "line": 955
2026-06-22T01:34:20.2488251Z             },
2026-06-22T01:34:20.2488322Z             {
2026-06-22T01:34:20.2488452Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T01:34:20.2488536Z               "line": 76
2026-06-22T01:34:20.2488623Z             },
2026-06-22T01:34:20.2488705Z             {
2026-06-22T01:34:20.2488828Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T01:34:20.2488914Z               "line": 147
2026-06-22T01:34:20.2489081Z             }
2026-06-22T01:34:20.2489166Z           ]
2026-06-22T01:34:20.2489246Z         }
2026-06-22T01:34:20.2489332Z       }
2026-06-22T01:34:20.2489408Z     },
2026-06-22T01:34:20.2489478Z     {
2026-06-22T01:34:20.2489563Z       "id": "REQ-EP-5",
2026-06-22T01:34:20.2490207Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-22T01:34:20.2490318Z       "requiredStages": [
2026-06-22T01:34:20.2490407Z         "impl",
2026-06-22T01:34:20.2490493Z         "unit",
2026-06-22T01:34:20.2490579Z         "int"
2026-06-22T01:34:20.2490661Z       ],
2026-06-22T01:34:20.2490746Z       "stages": {
2026-06-22T01:34:20.2490826Z         "doc": {
2026-06-22T01:34:20.2490918Z           "complete": false,
2026-06-22T01:34:20.2491009Z           "evidence": []
2026-06-22T01:34:20.2491090Z         },
2026-06-22T01:34:20.2491175Z         "impl": {
2026-06-22T01:34:20.2491262Z           "complete": true,
2026-06-22T01:34:20.2491357Z           "evidence": [
2026-06-22T01:34:20.2491438Z             {
2026-06-22T01:34:20.2491568Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.2491653Z               "line": 367
2026-06-22T01:34:20.2491848Z             },
2026-06-22T01:34:20.2491925Z             {
2026-06-22T01:34:20.2492042Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:34:20.2492214Z               "line": 18
2026-06-22T01:34:20.2492295Z             },
2026-06-22T01:34:20.2492380Z             {
2026-06-22T01:34:20.2492494Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:34:20.2492582Z               "line": 63
2026-06-22T01:34:20.2492668Z             },
2026-06-22T01:34:20.2492747Z             {
2026-06-22T01:34:20.2492868Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:34:20.2492943Z               "line": 92
2026-06-22T01:34:20.2493029Z             },
2026-06-22T01:34:20.2493110Z             {
2026-06-22T01:34:20.2493226Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:34:20.2493310Z               "line": 167
2026-06-22T01:34:20.2493391Z             },
2026-06-22T01:34:20.2493478Z             {
2026-06-22T01:34:20.2493587Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:34:20.2493687Z               "line": 179
2026-06-22T01:34:20.2493773Z             },
2026-06-22T01:34:20.2493855Z             {
2026-06-22T01:34:20.2493968Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.2494054Z               "line": 114
2026-06-22T01:34:20.2494141Z             },
2026-06-22T01:34:20.2494217Z             {
2026-06-22T01:34:20.2494340Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2494425Z               "line": 22
2026-06-22T01:34:20.2494516Z             },
2026-06-22T01:34:20.2494599Z             {
2026-06-22T01:34:20.2494708Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2494805Z               "line": 145
2026-06-22T01:34:20.2494882Z             },
2026-06-22T01:34:20.2494966Z             {
2026-06-22T01:34:20.2495071Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2495158Z               "line": 174
2026-06-22T01:34:20.2495243Z             },
2026-06-22T01:34:20.2495329Z             {
2026-06-22T01:34:20.2495444Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2495539Z               "line": 196
2026-06-22T01:34:20.2495624Z             },
2026-06-22T01:34:20.2495711Z             {
2026-06-22T01:34:20.2495825Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2495901Z               "line": 221
2026-06-22T01:34:20.2495986Z             },
2026-06-22T01:34:20.2496069Z             {
2026-06-22T01:34:20.2496182Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2496268Z               "line": 247
2026-06-22T01:34:20.2496355Z             },
2026-06-22T01:34:20.2496436Z             {
2026-06-22T01:34:20.2496544Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2496630Z               "line": 270
2026-06-22T01:34:20.2496718Z             },
2026-06-22T01:34:20.2496797Z             {
2026-06-22T01:34:20.2496917Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.2497008Z               "line": 104
2026-06-22T01:34:20.2497094Z             },
2026-06-22T01:34:20.2497178Z             {
2026-06-22T01:34:20.2497282Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2497369Z               "line": 6068
2026-06-22T01:34:20.2497453Z             },
2026-06-22T01:34:20.2497538Z             {
2026-06-22T01:34:20.2497633Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2497720Z               "line": 6202
2026-06-22T01:34:20.2497800Z             },
2026-06-22T01:34:20.2497881Z             {
2026-06-22T01:34:20.2497982Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2498072Z               "line": 6368
2026-06-22T01:34:20.2498157Z             },
2026-06-22T01:34:20.2498248Z             {
2026-06-22T01:34:20.2498344Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2498425Z               "line": 6896
2026-06-22T01:34:20.2498587Z             }
2026-06-22T01:34:20.2498673Z           ]
2026-06-22T01:34:20.2498758Z         },
2026-06-22T01:34:20.2498916Z         "int": {
2026-06-22T01:34:20.2499116Z           "complete": true,
2026-06-22T01:34:20.2499207Z           "evidence": [
2026-06-22T01:34:20.2499279Z             {
2026-06-22T01:34:20.2499407Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T01:34:20.2499497Z               "line": 16
2026-06-22T01:34:20.2499580Z             },
2026-06-22T01:34:20.2499665Z             {
2026-06-22T01:34:20.2499773Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T01:34:20.2499854Z               "line": 15
2026-06-22T01:34:20.2499944Z             }
2026-06-22T01:34:20.2500029Z           ]
2026-06-22T01:34:20.2500113Z         },
2026-06-22T01:34:20.2500200Z         "unit": {
2026-06-22T01:34:20.2500287Z           "complete": true,
2026-06-22T01:34:20.2500363Z           "evidence": [
2026-06-22T01:34:20.2500442Z             {
2026-06-22T01:34:20.2500568Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:34:20.2500648Z               "line": 246
2026-06-22T01:34:20.2500734Z             },
2026-06-22T01:34:20.2500815Z             {
2026-06-22T01:34:20.2500935Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:34:20.2501025Z               "line": 306
2026-06-22T01:34:20.2501100Z             },
2026-06-22T01:34:20.2501192Z             {
2026-06-22T01:34:20.2501301Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:34:20.2501387Z               "line": 363
2026-06-22T01:34:20.2501473Z             },
2026-06-22T01:34:20.2501555Z             {
2026-06-22T01:34:20.2501669Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2501754Z               "line": 286
2026-06-22T01:34:20.2501841Z             },
2026-06-22T01:34:20.2501921Z             {
2026-06-22T01:34:20.2502040Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2502142Z               "line": 338
2026-06-22T01:34:20.2502232Z             },
2026-06-22T01:34:20.2502317Z             {
2026-06-22T01:34:20.2502447Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.2502542Z               "line": 783
2026-06-22T01:34:20.2502621Z             },
2026-06-22T01:34:20.2502702Z             {
2026-06-22T01:34:20.2502812Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2502899Z               "line": 8751
2026-06-22T01:34:20.2502983Z             },
2026-06-22T01:34:20.2503069Z             {
2026-06-22T01:34:20.2503166Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2503251Z               "line": 8904
2026-06-22T01:34:20.2503336Z             },
2026-06-22T01:34:20.2503418Z             {
2026-06-22T01:34:20.2503518Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2503608Z               "line": 9493
2026-06-22T01:34:20.2503689Z             },
2026-06-22T01:34:20.2503781Z             {
2026-06-22T01:34:20.2503865Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2503970Z               "line": 9609
2026-06-22T01:34:20.2504053Z             }
2026-06-22T01:34:20.2504143Z           ]
2026-06-22T01:34:20.2504229Z         }
2026-06-22T01:34:20.2504319Z       }
2026-06-22T01:34:20.2504406Z     },
2026-06-22T01:34:20.2504486Z     {
2026-06-22T01:34:20.2504571Z       "id": "REQ-EP-6",
2026-06-22T01:34:20.2506056Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-22T01:34:20.2506155Z       "requiredStages": [
2026-06-22T01:34:20.2506241Z         "doc",
2026-06-22T01:34:20.2506470Z         "impl",
2026-06-22T01:34:20.2506561Z         "unit"
2026-06-22T01:34:20.2506648Z       ],
2026-06-22T01:34:20.2506833Z       "stages": {
2026-06-22T01:34:20.2506920Z         "doc": {
2026-06-22T01:34:20.2507010Z           "complete": true,
2026-06-22T01:34:20.2507095Z           "evidence": [
2026-06-22T01:34:20.2507176Z             {
2026-06-22T01:34:20.2507283Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.2507367Z               "line": 227
2026-06-22T01:34:20.2507448Z             }
2026-06-22T01:34:20.2507535Z           ]
2026-06-22T01:34:20.2507607Z         },
2026-06-22T01:34:20.2507696Z         "impl": {
2026-06-22T01:34:20.2507786Z           "complete": true,
2026-06-22T01:34:20.2507876Z           "evidence": [
2026-06-22T01:34:20.2507957Z             {
2026-06-22T01:34:20.2508079Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2508164Z               "line": 212
2026-06-22T01:34:20.2508246Z             }
2026-06-22T01:34:20.2508323Z           ]
2026-06-22T01:34:20.2508417Z         },
2026-06-22T01:34:20.2508508Z         "int": {
2026-06-22T01:34:20.2508599Z           "complete": true,
2026-06-22T01:34:20.2508685Z           "evidence": [
2026-06-22T01:34:20.2508770Z             {
2026-06-22T01:34:20.2508881Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T01:34:20.2509051Z               "line": 18
2026-06-22T01:34:20.2509128Z             }
2026-06-22T01:34:20.2509205Z           ]
2026-06-22T01:34:20.2509304Z         },
2026-06-22T01:34:20.2509385Z         "unit": {
2026-06-22T01:34:20.2509486Z           "complete": true,
2026-06-22T01:34:20.2509567Z           "evidence": [
2026-06-22T01:34:20.2509647Z             {
2026-06-22T01:34:20.2509767Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.2509854Z               "line": 556
2026-06-22T01:34:20.2509934Z             },
2026-06-22T01:34:20.2510020Z             {
2026-06-22T01:34:20.2510135Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2510230Z               "line": 904
2026-06-22T01:34:20.2510305Z             }
2026-06-22T01:34:20.2510390Z           ]
2026-06-22T01:34:20.2510477Z         }
2026-06-22T01:34:20.2510561Z       }
2026-06-22T01:34:20.2510641Z     },
2026-06-22T01:34:20.2510721Z     {
2026-06-22T01:34:20.2510808Z       "id": "REQ-EP-7",
2026-06-22T01:34:20.2512449Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-22T01:34:20.2512543Z       "requiredStages": [
2026-06-22T01:34:20.2512629Z         "doc",
2026-06-22T01:34:20.2512730Z         "impl",
2026-06-22T01:34:20.2512806Z         "unit"
2026-06-22T01:34:20.2512877Z       ],
2026-06-22T01:34:20.2512973Z       "stages": {
2026-06-22T01:34:20.2513055Z         "doc": {
2026-06-22T01:34:20.2513153Z           "complete": true,
2026-06-22T01:34:20.2513243Z           "evidence": [
2026-06-22T01:34:20.2513324Z             {
2026-06-22T01:34:20.2513425Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.2513515Z               "line": 490
2026-06-22T01:34:20.2513606Z             }
2026-06-22T01:34:20.2513687Z           ]
2026-06-22T01:34:20.2513768Z         },
2026-06-22T01:34:20.2513849Z         "impl": {
2026-06-22T01:34:20.2513944Z           "complete": true,
2026-06-22T01:34:20.2514031Z           "evidence": [
2026-06-22T01:34:20.2514117Z             {
2026-06-22T01:34:20.2514235Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.2514317Z               "line": 505
2026-06-22T01:34:20.2514398Z             },
2026-06-22T01:34:20.2514479Z             {
2026-06-22T01:34:20.2514699Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:34:20.2514789Z               "line": 87
2026-06-22T01:34:20.2514956Z             },
2026-06-22T01:34:20.2515037Z             {
2026-06-22T01:34:20.2515169Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.2515257Z               "line": 81
2026-06-22T01:34:20.2515342Z             },
2026-06-22T01:34:20.2515426Z             {
2026-06-22T01:34:20.2515550Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.2515641Z               "line": 166
2026-06-22T01:34:20.2515729Z             },
2026-06-22T01:34:20.2515815Z             {
2026-06-22T01:34:20.2515920Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2516007Z               "line": 1645
2026-06-22T01:34:20.2516096Z             }
2026-06-22T01:34:20.2516177Z           ]
2026-06-22T01:34:20.2516264Z         },
2026-06-22T01:34:20.2516354Z         "int": {
2026-06-22T01:34:20.2516453Z           "complete": false,
2026-06-22T01:34:20.2516545Z           "evidence": []
2026-06-22T01:34:20.2516626Z         },
2026-06-22T01:34:20.2516725Z         "unit": {
2026-06-22T01:34:20.2516816Z           "complete": true,
2026-06-22T01:34:20.2516903Z           "evidence": [
2026-06-22T01:34:20.2516988Z             {
2026-06-22T01:34:20.2517097Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.2517198Z               "line": 623
2026-06-22T01:34:20.2517279Z             },
2026-06-22T01:34:20.2517364Z             {
2026-06-22T01:34:20.2517470Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.2517561Z               "line": 212
2026-06-22T01:34:20.2517645Z             },
2026-06-22T01:34:20.2517727Z             {
2026-06-22T01:34:20.2517828Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:34:20.2517922Z               "line": 307
2026-06-22T01:34:20.2518008Z             },
2026-06-22T01:34:20.2518095Z             {
2026-06-22T01:34:20.2518223Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2518312Z               "line": 7724
2026-06-22T01:34:20.2518397Z             },
2026-06-22T01:34:20.2518474Z             {
2026-06-22T01:34:20.2518578Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2518672Z               "line": 7751
2026-06-22T01:34:20.2518754Z             }
2026-06-22T01:34:20.2518845Z           ]
2026-06-22T01:34:20.2518934Z         }
2026-06-22T01:34:20.2519097Z       }
2026-06-22T01:34:20.2519169Z     },
2026-06-22T01:34:20.2519254Z     {
2026-06-22T01:34:20.2519349Z       "id": "REQ-FRONT-1",
2026-06-22T01:34:20.2519521Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-22T01:34:20.2519621Z       "requiredStages": [],
2026-06-22T01:34:20.2519712Z       "stages": {
2026-06-22T01:34:20.2519784Z         "doc": {
2026-06-22T01:34:20.2519874Z           "complete": false,
2026-06-22T01:34:20.2519960Z           "evidence": []
2026-06-22T01:34:20.2520051Z         },
2026-06-22T01:34:20.2520141Z         "impl": {
2026-06-22T01:34:20.2520231Z           "complete": false,
2026-06-22T01:34:20.2520332Z           "evidence": []
2026-06-22T01:34:20.2520414Z         },
2026-06-22T01:34:20.2520498Z         "int": {
2026-06-22T01:34:20.2520580Z           "complete": false,
2026-06-22T01:34:20.2520671Z           "evidence": []
2026-06-22T01:34:20.2520752Z         },
2026-06-22T01:34:20.2520851Z         "unit": {
2026-06-22T01:34:20.2520945Z           "complete": false,
2026-06-22T01:34:20.2521022Z           "evidence": []
2026-06-22T01:34:20.2521107Z         }
2026-06-22T01:34:20.2521192Z       }
2026-06-22T01:34:20.2521277Z     },
2026-06-22T01:34:20.2521359Z     {
2026-06-22T01:34:20.2521473Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-22T01:34:20.2526756Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-22T01:34:20.2527110Z       "requiredStages": [
2026-06-22T01:34:20.2527195Z         "int"
2026-06-22T01:34:20.2527276Z       ],
2026-06-22T01:34:20.2527367Z       "stages": {
2026-06-22T01:34:20.2527444Z         "doc": {
2026-06-22T01:34:20.2527524Z           "complete": false,
2026-06-22T01:34:20.2527619Z           "evidence": []
2026-06-22T01:34:20.2527695Z         },
2026-06-22T01:34:20.2527792Z         "impl": {
2026-06-22T01:34:20.2527887Z           "complete": false,
2026-06-22T01:34:20.2527967Z           "evidence": []
2026-06-22T01:34:20.2528069Z         },
2026-06-22T01:34:20.2528154Z         "int": {
2026-06-22T01:34:20.2528244Z           "complete": true,
2026-06-22T01:34:20.2528355Z           "evidence": [
2026-06-22T01:34:20.2528431Z             {
2026-06-22T01:34:20.2528559Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T01:34:20.2528640Z               "line": 300
2026-06-22T01:34:20.2528727Z             }
2026-06-22T01:34:20.2528807Z           ]
2026-06-22T01:34:20.2528896Z         },
2026-06-22T01:34:20.2529058Z         "unit": {
2026-06-22T01:34:20.2529152Z           "complete": false,
2026-06-22T01:34:20.2529247Z           "evidence": []
2026-06-22T01:34:20.2529324Z         }
2026-06-22T01:34:20.2529409Z       }
2026-06-22T01:34:20.2529490Z     },
2026-06-22T01:34:20.2529590Z     {
2026-06-22T01:34:20.2529696Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-22T01:34:20.2532224Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-22T01:34:20.2532339Z       "requiredStages": [
2026-06-22T01:34:20.2532433Z         "impl",
2026-06-22T01:34:20.2532515Z         "unit",
2026-06-22T01:34:20.2532601Z         "int"
2026-06-22T01:34:20.2532820Z       ],
2026-06-22T01:34:20.2532902Z       "stages": {
2026-06-22T01:34:20.2532987Z         "doc": {
2026-06-22T01:34:20.2533217Z           "complete": false,
2026-06-22T01:34:20.2533301Z           "evidence": []
2026-06-22T01:34:20.2533387Z         },
2026-06-22T01:34:20.2533483Z         "impl": {
2026-06-22T01:34:20.2533569Z           "complete": true,
2026-06-22T01:34:20.2533654Z           "evidence": [
2026-06-22T01:34:20.2533740Z             {
2026-06-22T01:34:20.2533860Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2533954Z               "line": 257
2026-06-22T01:34:20.2534036Z             }
2026-06-22T01:34:20.2534122Z           ]
2026-06-22T01:34:20.2534203Z         },
2026-06-22T01:34:20.2534292Z         "int": {
2026-06-22T01:34:20.2534382Z           "complete": true,
2026-06-22T01:34:20.2534479Z           "evidence": [
2026-06-22T01:34:20.2534550Z             {
2026-06-22T01:34:20.2534687Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-22T01:34:20.2534793Z               "line": 93
2026-06-22T01:34:20.2534874Z             }
2026-06-22T01:34:20.2534959Z           ]
2026-06-22T01:34:20.2535050Z         },
2026-06-22T01:34:20.2535137Z         "unit": {
2026-06-22T01:34:20.2535232Z           "complete": true,
2026-06-22T01:34:20.2535317Z           "evidence": [
2026-06-22T01:34:20.2535403Z             {
2026-06-22T01:34:20.2535513Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2535608Z               "line": 802
2026-06-22T01:34:20.2535689Z             },
2026-06-22T01:34:20.2535776Z             {
2026-06-22T01:34:20.2535889Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2535970Z               "line": 824
2026-06-22T01:34:20.2536058Z             },
2026-06-22T01:34:20.2536143Z             {
2026-06-22T01:34:20.2536257Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2536343Z               "line": 855
2026-06-22T01:34:20.2536434Z             }
2026-06-22T01:34:20.2536528Z           ]
2026-06-22T01:34:20.2536604Z         }
2026-06-22T01:34:20.2536689Z       }
2026-06-22T01:34:20.2536775Z     },
2026-06-22T01:34:20.2536869Z     {
2026-06-22T01:34:20.2536987Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-22T01:34:20.2539513Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-22T01:34:20.2539638Z       "requiredStages": [
2026-06-22T01:34:20.2539745Z         "doc",
2026-06-22T01:34:20.2539826Z         "impl",
2026-06-22T01:34:20.2539912Z         "unit",
2026-06-22T01:34:20.2539989Z         "int"
2026-06-22T01:34:20.2540069Z       ],
2026-06-22T01:34:20.2540164Z       "stages": {
2026-06-22T01:34:20.2540247Z         "doc": {
2026-06-22T01:34:20.2540342Z           "complete": true,
2026-06-22T01:34:20.2540431Z           "evidence": [
2026-06-22T01:34:20.2540518Z             {
2026-06-22T01:34:20.2540623Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2540718Z               "line": 333
2026-06-22T01:34:20.2540803Z             }
2026-06-22T01:34:20.2540890Z           ]
2026-06-22T01:34:20.2540966Z         },
2026-06-22T01:34:20.2541047Z         "impl": {
2026-06-22T01:34:20.2541137Z           "complete": true,
2026-06-22T01:34:20.2541220Z           "evidence": [
2026-06-22T01:34:20.2541424Z             {
2026-06-22T01:34:20.2541549Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2541724Z               "line": 494
2026-06-22T01:34:20.2541811Z             },
2026-06-22T01:34:20.2541897Z             {
2026-06-22T01:34:20.2542014Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2542104Z               "line": 499
2026-06-22T01:34:20.2542190Z             },
2026-06-22T01:34:20.2542279Z             {
2026-06-22T01:34:20.2542401Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2542493Z               "line": 874
2026-06-22T01:34:20.2542570Z             },
2026-06-22T01:34:20.2542650Z             {
2026-06-22T01:34:20.2542765Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2542841Z               "line": 915
2026-06-22T01:34:20.2542936Z             },
2026-06-22T01:34:20.2543017Z             {
2026-06-22T01:34:20.2543147Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2543237Z               "line": 926
2026-06-22T01:34:20.2543322Z             },
2026-06-22T01:34:20.2543414Z             {
2026-06-22T01:34:20.2543537Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.2543627Z               "line": 358
2026-06-22T01:34:20.2543709Z             }
2026-06-22T01:34:20.2543791Z           ]
2026-06-22T01:34:20.2543871Z         },
2026-06-22T01:34:20.2543957Z         "int": {
2026-06-22T01:34:20.2544043Z           "complete": true,
2026-06-22T01:34:20.2544134Z           "evidence": [
2026-06-22T01:34:20.2544219Z             {
2026-06-22T01:34:20.2544349Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-22T01:34:20.2544444Z               "line": 30
2026-06-22T01:34:20.2544528Z             }
2026-06-22T01:34:20.2544610Z           ]
2026-06-22T01:34:20.2544692Z         },
2026-06-22T01:34:20.2544773Z         "unit": {
2026-06-22T01:34:20.2544862Z           "complete": true,
2026-06-22T01:34:20.2544952Z           "evidence": [
2026-06-22T01:34:20.2545039Z             {
2026-06-22T01:34:20.2545158Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2545248Z               "line": 1493
2026-06-22T01:34:20.2545329Z             },
2026-06-22T01:34:20.2545416Z             {
2026-06-22T01:34:20.2545534Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2545625Z               "line": 1518
2026-06-22T01:34:20.2545706Z             },
2026-06-22T01:34:20.2545787Z             {
2026-06-22T01:34:20.2545910Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2545993Z               "line": 1535
2026-06-22T01:34:20.2546083Z             },
2026-06-22T01:34:20.2546173Z             {
2026-06-22T01:34:20.2546283Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2546379Z               "line": 1578
2026-06-22T01:34:20.2546464Z             }
2026-06-22T01:34:20.2546549Z           ]
2026-06-22T01:34:20.2546637Z         }
2026-06-22T01:34:20.2546726Z       }
2026-06-22T01:34:20.2549703Z     },
2026-06-22T01:34:20.2549833Z     {
2026-06-22T01:34:20.2549993Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-22T01:34:20.2552598Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-22T01:34:20.2552966Z       "requiredStages": [],
2026-06-22T01:34:20.2553058Z       "stages": {
2026-06-22T01:34:20.2553131Z         "doc": {
2026-06-22T01:34:20.2553234Z           "complete": false,
2026-06-22T01:34:20.2553335Z           "evidence": []
2026-06-22T01:34:20.2553416Z         },
2026-06-22T01:34:20.2553501Z         "impl": {
2026-06-22T01:34:20.2553582Z           "complete": false,
2026-06-22T01:34:20.2553669Z           "evidence": []
2026-06-22T01:34:20.2553745Z         },
2026-06-22T01:34:20.2553830Z         "int": {
2026-06-22T01:34:20.2553925Z           "complete": false,
2026-06-22T01:34:20.2554008Z           "evidence": []
2026-06-22T01:34:20.2554092Z         },
2026-06-22T01:34:20.2554178Z         "unit": {
2026-06-22T01:34:20.2554264Z           "complete": false,
2026-06-22T01:34:20.2554347Z           "evidence": []
2026-06-22T01:34:20.2554431Z         }
2026-06-22T01:34:20.2554541Z       }
2026-06-22T01:34:20.2554623Z     },
2026-06-22T01:34:20.2554708Z     {
2026-06-22T01:34:20.2554846Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-22T01:34:20.2558561Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-22T01:34:20.2558708Z       "requiredStages": [
2026-06-22T01:34:20.2558796Z         "impl",
2026-06-22T01:34:20.2558876Z         "unit",
2026-06-22T01:34:20.2559047Z         "int"
2026-06-22T01:34:20.2559129Z       ],
2026-06-22T01:34:20.2559215Z       "stages": {
2026-06-22T01:34:20.2559300Z         "doc": {
2026-06-22T01:34:20.2559391Z           "complete": false,
2026-06-22T01:34:20.2559472Z           "evidence": []
2026-06-22T01:34:20.2559553Z         },
2026-06-22T01:34:20.2559639Z         "impl": {
2026-06-22T01:34:20.2559754Z           "complete": true,
2026-06-22T01:34:20.2559848Z           "evidence": [
2026-06-22T01:34:20.2559953Z             {
2026-06-22T01:34:20.2560083Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2560177Z               "line": 570
2026-06-22T01:34:20.2560263Z             },
2026-06-22T01:34:20.2560345Z             {
2026-06-22T01:34:20.2560464Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2560544Z               "line": 594
2026-06-22T01:34:20.2560629Z             },
2026-06-22T01:34:20.2560711Z             {
2026-06-22T01:34:20.2560823Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2560903Z               "line": 620
2026-06-22T01:34:20.2560994Z             },
2026-06-22T01:34:20.2561076Z             {
2026-06-22T01:34:20.2561190Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2561275Z               "line": 679
2026-06-22T01:34:20.2561357Z             },
2026-06-22T01:34:20.2561547Z             {
2026-06-22T01:34:20.2561663Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.2561843Z               "line": 89
2026-06-22T01:34:20.2561924Z             },
2026-06-22T01:34:20.2562005Z             {
2026-06-22T01:34:20.2562114Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.2562200Z               "line": 134
2026-06-22T01:34:20.2562287Z             }
2026-06-22T01:34:20.2562373Z           ]
2026-06-22T01:34:20.2562457Z         },
2026-06-22T01:34:20.2562544Z         "int": {
2026-06-22T01:34:20.2562626Z           "complete": true,
2026-06-22T01:34:20.2562725Z           "evidence": [
2026-06-22T01:34:20.2562801Z             {
2026-06-22T01:34:20.2562955Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-22T01:34:20.2563040Z               "line": 20
2026-06-22T01:34:20.2563124Z             }
2026-06-22T01:34:20.2563191Z           ]
2026-06-22T01:34:20.2563272Z         },
2026-06-22T01:34:20.2563367Z         "unit": {
2026-06-22T01:34:20.2563446Z           "complete": true,
2026-06-22T01:34:20.2563541Z           "evidence": [
2026-06-22T01:34:20.2563623Z             {
2026-06-22T01:34:20.2563742Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2563827Z               "line": 1047
2026-06-22T01:34:20.2563909Z             },
2026-06-22T01:34:20.2563995Z             {
2026-06-22T01:34:20.2564099Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.2564185Z               "line": 445
2026-06-22T01:34:20.2564263Z             }
2026-06-22T01:34:20.2564338Z           ]
2026-06-22T01:34:20.2564414Z         }
2026-06-22T01:34:20.2564500Z       }
2026-06-22T01:34:20.2564587Z     },
2026-06-22T01:34:20.2564667Z     {
2026-06-22T01:34:20.2564791Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-22T01:34:20.2567341Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-22T01:34:20.2567452Z       "requiredStages": [
2026-06-22T01:34:20.2567531Z         "doc",
2026-06-22T01:34:20.2567617Z         "impl",
2026-06-22T01:34:20.2567704Z         "unit",
2026-06-22T01:34:20.2567786Z         "int"
2026-06-22T01:34:20.2567870Z       ],
2026-06-22T01:34:20.2567956Z       "stages": {
2026-06-22T01:34:20.2568062Z         "doc": {
2026-06-22T01:34:20.2568157Z           "complete": true,
2026-06-22T01:34:20.2568270Z           "evidence": [
2026-06-22T01:34:20.2568356Z             {
2026-06-22T01:34:20.2568464Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2568544Z               "line": 302
2026-06-22T01:34:20.2568629Z             }
2026-06-22T01:34:20.2568711Z           ]
2026-06-22T01:34:20.2568798Z         },
2026-06-22T01:34:20.2568883Z         "impl": {
2026-06-22T01:34:20.2569060Z           "complete": true,
2026-06-22T01:34:20.2569141Z           "evidence": [
2026-06-22T01:34:20.2569226Z             {
2026-06-22T01:34:20.2569346Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.2569431Z               "line": 108
2026-06-22T01:34:20.2569516Z             },
2026-06-22T01:34:20.2569602Z             {
2026-06-22T01:34:20.2569717Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2569803Z               "line": 921
2026-06-22T01:34:20.2570018Z             },
2026-06-22T01:34:20.2570103Z             {
2026-06-22T01:34:20.2570290Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2570394Z               "line": 1137
2026-06-22T01:34:20.2570475Z             },
2026-06-22T01:34:20.2570556Z             {
2026-06-22T01:34:20.2570671Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2570761Z               "line": 23
2026-06-22T01:34:20.2570843Z             },
2026-06-22T01:34:20.2570929Z             {
2026-06-22T01:34:20.2571047Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2571132Z               "line": 113
2026-06-22T01:34:20.2571203Z             },
2026-06-22T01:34:20.2571290Z             {
2026-06-22T01:34:20.2571406Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2571491Z               "line": 158
2026-06-22T01:34:20.2571573Z             },
2026-06-22T01:34:20.2571665Z             {
2026-06-22T01:34:20.2571792Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2571883Z               "line": 218
2026-06-22T01:34:20.2571975Z             },
2026-06-22T01:34:20.2572050Z             {
2026-06-22T01:34:20.2572169Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2572251Z               "line": 261
2026-06-22T01:34:20.2572337Z             },
2026-06-22T01:34:20.2572422Z             {
2026-06-22T01:34:20.2572532Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2572618Z               "line": 275
2026-06-22T01:34:20.2572699Z             },
2026-06-22T01:34:20.2572784Z             {
2026-06-22T01:34:20.2572909Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2572985Z               "line": 320
2026-06-22T01:34:20.2573075Z             },
2026-06-22T01:34:20.2573157Z             {
2026-06-22T01:34:20.2573276Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2573366Z               "line": 347
2026-06-22T01:34:20.2573448Z             },
2026-06-22T01:34:20.2573534Z             {
2026-06-22T01:34:20.2573647Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2573732Z               "line": 359
2026-06-22T01:34:20.2573813Z             },
2026-06-22T01:34:20.2573899Z             {
2026-06-22T01:34:20.2574006Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2574101Z               "line": 373
2026-06-22T01:34:20.2574188Z             },
2026-06-22T01:34:20.2574270Z             {
2026-06-22T01:34:20.2574392Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2574474Z               "line": 400
2026-06-22T01:34:20.2574560Z             },
2026-06-22T01:34:20.2574636Z             {
2026-06-22T01:34:20.2574755Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2574837Z               "line": 643
2026-06-22T01:34:20.2574922Z             },
2026-06-22T01:34:20.2575012Z             {
2026-06-22T01:34:20.2575123Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2575213Z               "line": 989
2026-06-22T01:34:20.2575294Z             },
2026-06-22T01:34:20.2575380Z             {
2026-06-22T01:34:20.2575499Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2575585Z               "line": 329
2026-06-22T01:34:20.2575671Z             },
2026-06-22T01:34:20.2575753Z             {
2026-06-22T01:34:20.2575871Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2575956Z               "line": 1298
2026-06-22T01:34:20.2576044Z             },
2026-06-22T01:34:20.2576129Z             {
2026-06-22T01:34:20.2576233Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2576320Z               "line": 1370
2026-06-22T01:34:20.2576401Z             },
2026-06-22T01:34:20.2576477Z             {
2026-06-22T01:34:20.2576590Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2576767Z               "line": 1382
2026-06-22T01:34:20.2576853Z             },
2026-06-22T01:34:20.2577005Z             {
2026-06-22T01:34:20.2577124Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2577200Z               "line": 2127
2026-06-22T01:34:20.2577286Z             },
2026-06-22T01:34:20.2577368Z             {
2026-06-22T01:34:20.2577468Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2577557Z               "line": 188
2026-06-22T01:34:20.2577644Z             },
2026-06-22T01:34:20.2577725Z             {
2026-06-22T01:34:20.2577834Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2577925Z               "line": 265
2026-06-22T01:34:20.2578002Z             },
2026-06-22T01:34:20.2578082Z             {
2026-06-22T01:34:20.2578187Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2578274Z               "line": 276
2026-06-22T01:34:20.2578355Z             },
2026-06-22T01:34:20.2578439Z             {
2026-06-22T01:34:20.2578545Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2578642Z               "line": 329
2026-06-22T01:34:20.2578717Z             },
2026-06-22T01:34:20.2578806Z             {
2026-06-22T01:34:20.2578921Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2579094Z               "line": 56
2026-06-22T01:34:20.2579180Z             },
2026-06-22T01:34:20.2579256Z             {
2026-06-22T01:34:20.2579372Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2579457Z               "line": 188
2026-06-22T01:34:20.2579538Z             },
2026-06-22T01:34:20.2579620Z             {
2026-06-22T01:34:20.2579743Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:34:20.2579824Z               "line": 82
2026-06-22T01:34:20.2579906Z             },
2026-06-22T01:34:20.2579991Z             {
2026-06-22T01:34:20.2580105Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2580192Z               "line": 308
2026-06-22T01:34:20.2580273Z             },
2026-06-22T01:34:20.2580363Z             {
2026-06-22T01:34:20.2580472Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.2580559Z               "line": 424
2026-06-22T01:34:20.2580634Z             },
2026-06-22T01:34:20.2580715Z             {
2026-06-22T01:34:20.2580821Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2580903Z               "line": 2006
2026-06-22T01:34:20.2580978Z             }
2026-06-22T01:34:20.2581059Z           ]
2026-06-22T01:34:20.2581146Z         },
2026-06-22T01:34:20.2581232Z         "int": {
2026-06-22T01:34:20.2581316Z           "complete": true,
2026-06-22T01:34:20.2581407Z           "evidence": [
2026-06-22T01:34:20.2581489Z             {
2026-06-22T01:34:20.2581612Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T01:34:20.2581693Z               "line": 57
2026-06-22T01:34:20.2581783Z             },
2026-06-22T01:34:20.2581873Z             {
2026-06-22T01:34:20.2581986Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T01:34:20.2582066Z               "line": 41
2026-06-22T01:34:20.2582148Z             }
2026-06-22T01:34:20.2582234Z           ]
2026-06-22T01:34:20.2582310Z         },
2026-06-22T01:34:20.2582395Z         "unit": {
2026-06-22T01:34:20.2582478Z           "complete": true,
2026-06-22T01:34:20.2582558Z           "evidence": [
2026-06-22T01:34:20.2582648Z             {
2026-06-22T01:34:20.2582758Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.2582849Z               "line": 532
2026-06-22T01:34:20.2582930Z             },
2026-06-22T01:34:20.2583011Z             {
2026-06-22T01:34:20.2583117Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.2583206Z               "line": 757
2026-06-22T01:34:20.2583297Z             },
2026-06-22T01:34:20.2583373Z             {
2026-06-22T01:34:20.2583488Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2583678Z               "line": 1067
2026-06-22T01:34:20.2583756Z             },
2026-06-22T01:34:20.2583921Z             {
2026-06-22T01:34:20.2584037Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2584142Z               "line": 1101
2026-06-22T01:34:20.2584236Z             },
2026-06-22T01:34:20.2584330Z             {
2026-06-22T01:34:20.2584449Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2584533Z               "line": 1143
2026-06-22T01:34:20.2584614Z             },
2026-06-22T01:34:20.2584695Z             {
2026-06-22T01:34:20.2584816Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2584900Z               "line": 1215
2026-06-22T01:34:20.2584991Z             },
2026-06-22T01:34:20.2585078Z             {
2026-06-22T01:34:20.2585187Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2585282Z               "line": 1228
2026-06-22T01:34:20.2585368Z             },
2026-06-22T01:34:20.2585458Z             {
2026-06-22T01:34:20.2585577Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2585674Z               "line": 1251
2026-06-22T01:34:20.2585754Z             },
2026-06-22T01:34:20.2585831Z             {
2026-06-22T01:34:20.2585949Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2586027Z               "line": 1277
2026-06-22T01:34:20.2586111Z             },
2026-06-22T01:34:20.2586178Z             {
2026-06-22T01:34:20.2586289Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2586370Z               "line": 1291
2026-06-22T01:34:20.2586454Z             },
2026-06-22T01:34:20.2586536Z             {
2026-06-22T01:34:20.2586651Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2586745Z               "line": 1315
2026-06-22T01:34:20.2586827Z             },
2026-06-22T01:34:20.2586919Z             {
2026-06-22T01:34:20.2587042Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2587126Z               "line": 1447
2026-06-22T01:34:20.2587216Z             },
2026-06-22T01:34:20.2587293Z             {
2026-06-22T01:34:20.2587413Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2587502Z               "line": 1623
2026-06-22T01:34:20.2587575Z             },
2026-06-22T01:34:20.2587661Z             {
2026-06-22T01:34:20.2587770Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2587860Z               "line": 1678
2026-06-22T01:34:20.2587938Z             },
2026-06-22T01:34:20.2588023Z             {
2026-06-22T01:34:20.2588136Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2588224Z               "line": 1724
2026-06-22T01:34:20.2588305Z             },
2026-06-22T01:34:20.2588386Z             {
2026-06-22T01:34:20.2588499Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2588596Z               "line": 1769
2026-06-22T01:34:20.2588680Z             },
2026-06-22T01:34:20.2588766Z             {
2026-06-22T01:34:20.2588877Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2589048Z               "line": 1813
2026-06-22T01:34:20.2589120Z             },
2026-06-22T01:34:20.2589197Z             {
2026-06-22T01:34:20.2589314Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2589400Z               "line": 1855
2026-06-22T01:34:20.2589490Z             },
2026-06-22T01:34:20.2589581Z             {
2026-06-22T01:34:20.2589698Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2589783Z               "line": 2481
2026-06-22T01:34:20.2589870Z             },
2026-06-22T01:34:20.2589937Z             {
2026-06-22T01:34:20.2590060Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2590146Z               "line": 217
2026-06-22T01:34:20.2590223Z             },
2026-06-22T01:34:20.2590412Z             {
2026-06-22T01:34:20.2590528Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2590713Z               "line": 233
2026-06-22T01:34:20.2590786Z             },
2026-06-22T01:34:20.2590871Z             {
2026-06-22T01:34:20.2590984Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2591066Z               "line": 254
2026-06-22T01:34:20.2591148Z             },
2026-06-22T01:34:20.2591223Z             {
2026-06-22T01:34:20.2591343Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2591430Z               "line": 265
2026-06-22T01:34:20.2591505Z             },
2026-06-22T01:34:20.2591596Z             {
2026-06-22T01:34:20.2591711Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2591802Z               "line": 278
2026-06-22T01:34:20.2591876Z             },
2026-06-22T01:34:20.2591953Z             {
2026-06-22T01:34:20.2592064Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2592158Z               "line": 289
2026-06-22T01:34:20.2592238Z             },
2026-06-22T01:34:20.2592323Z             {
2026-06-22T01:34:20.2592443Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2592531Z               "line": 301
2026-06-22T01:34:20.2592612Z             },
2026-06-22T01:34:20.2592698Z             {
2026-06-22T01:34:20.2592814Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2592903Z               "line": 312
2026-06-22T01:34:20.2592974Z             },
2026-06-22T01:34:20.2593061Z             {
2026-06-22T01:34:20.2593175Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2593270Z               "line": 323
2026-06-22T01:34:20.2593357Z             },
2026-06-22T01:34:20.2593433Z             {
2026-06-22T01:34:20.2593561Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2593652Z               "line": 332
2026-06-22T01:34:20.2593733Z             },
2026-06-22T01:34:20.2593819Z             {
2026-06-22T01:34:20.2593938Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2594034Z               "line": 342
2026-06-22T01:34:20.2594110Z             },
2026-06-22T01:34:20.2594191Z             {
2026-06-22T01:34:20.2594306Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:34:20.2594396Z               "line": 358
2026-06-22T01:34:20.2594472Z             },
2026-06-22T01:34:20.2594558Z             {
2026-06-22T01:34:20.2594669Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2594758Z               "line": 758
2026-06-22T01:34:20.2594833Z             },
2026-06-22T01:34:20.2594910Z             {
2026-06-22T01:34:20.2595023Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2595113Z               "line": 794
2026-06-22T01:34:20.2595193Z             },
2026-06-22T01:34:20.2595280Z             {
2026-06-22T01:34:20.2595390Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.2595489Z               "line": 966
2026-06-22T01:34:20.2595565Z             },
2026-06-22T01:34:20.2595657Z             {
2026-06-22T01:34:20.2595770Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T01:34:20.2595861Z               "line": 145
2026-06-22T01:34:20.2595947Z             },
2026-06-22T01:34:20.2596024Z             {
2026-06-22T01:34:20.2596146Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T01:34:20.2596234Z               "line": 224
2026-06-22T01:34:20.2596319Z             },
2026-06-22T01:34:20.2596409Z             {
2026-06-22T01:34:20.2596524Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T01:34:20.2596619Z               "line": 293
2026-06-22T01:34:20.2596705Z             },
2026-06-22T01:34:20.2596795Z             {
2026-06-22T01:34:20.2596906Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T01:34:20.2597000Z               "line": 17
2026-06-22T01:34:20.2597188Z             },
2026-06-22T01:34:20.2597268Z             {
2026-06-22T01:34:20.2597387Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T01:34:20.2597550Z               "line": 104
2026-06-22T01:34:20.2597634Z             }
2026-06-22T01:34:20.2597719Z           ]
2026-06-22T01:34:20.2597805Z         }
2026-06-22T01:34:20.2597892Z       }
2026-06-22T01:34:20.2597973Z     },
2026-06-22T01:34:20.2598058Z     {
2026-06-22T01:34:20.2598178Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-22T01:34:20.2601307Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-22T01:34:20.2601431Z       "requiredStages": [
2026-06-22T01:34:20.2601512Z         "doc",
2026-06-22T01:34:20.2601602Z         "impl",
2026-06-22T01:34:20.2601689Z         "unit",
2026-06-22T01:34:20.2601774Z         "int"
2026-06-22T01:34:20.2601850Z       ],
2026-06-22T01:34:20.2601936Z       "stages": {
2026-06-22T01:34:20.2602028Z         "doc": {
2026-06-22T01:34:20.2602117Z           "complete": true,
2026-06-22T01:34:20.2602208Z           "evidence": [
2026-06-22T01:34:20.2602319Z             {
2026-06-22T01:34:20.2602427Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2602542Z               "line": 388
2026-06-22T01:34:20.2602619Z             }
2026-06-22T01:34:20.2602709Z           ]
2026-06-22T01:34:20.2602784Z         },
2026-06-22T01:34:20.2602865Z         "impl": {
2026-06-22T01:34:20.2602960Z           "complete": true,
2026-06-22T01:34:20.2603036Z           "evidence": [
2026-06-22T01:34:20.2603120Z             {
2026-06-22T01:34:20.2603240Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2603335Z               "line": 823
2026-06-22T01:34:20.2603416Z             },
2026-06-22T01:34:20.2603497Z             {
2026-06-22T01:34:20.2603612Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2603698Z               "line": 846
2026-06-22T01:34:20.2603792Z             }
2026-06-22T01:34:20.2603864Z           ]
2026-06-22T01:34:20.2603941Z         },
2026-06-22T01:34:20.2604022Z         "int": {
2026-06-22T01:34:20.2604121Z           "complete": true,
2026-06-22T01:34:20.2604208Z           "evidence": [
2026-06-22T01:34:20.2604294Z             {
2026-06-22T01:34:20.2604426Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:34:20.2604513Z               "line": 228
2026-06-22T01:34:20.2604595Z             },
2026-06-22T01:34:20.2604670Z             {
2026-06-22T01:34:20.2604785Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T01:34:20.2604876Z               "line": 468
2026-06-22T01:34:20.2604961Z             }
2026-06-22T01:34:20.2605042Z           ]
2026-06-22T01:34:20.2605113Z         },
2026-06-22T01:34:20.2605205Z         "unit": {
2026-06-22T01:34:20.2605304Z           "complete": true,
2026-06-22T01:34:20.2605394Z           "evidence": [
2026-06-22T01:34:20.2605475Z             {
2026-06-22T01:34:20.2605588Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.2605682Z               "line": 1583
2026-06-22T01:34:20.2605873Z             }
2026-06-22T01:34:20.2605954Z           ]
2026-06-22T01:34:20.2606030Z         }
2026-06-22T01:34:20.2606217Z       }
2026-06-22T01:34:20.2606302Z     },
2026-06-22T01:34:20.2606382Z     {
2026-06-22T01:34:20.2606498Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-22T01:34:20.2610173Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-22T01:34:20.2610308Z       "requiredStages": [
2026-06-22T01:34:20.2610402Z         "doc",
2026-06-22T01:34:20.2610491Z         "impl",
2026-06-22T01:34:20.2610577Z         "unit"
2026-06-22T01:34:20.2610663Z       ],
2026-06-22T01:34:20.2610747Z       "stages": {
2026-06-22T01:34:20.2610832Z         "doc": {
2026-06-22T01:34:20.2610923Z           "complete": true,
2026-06-22T01:34:20.2611000Z           "evidence": [
2026-06-22T01:34:20.2611109Z             {
2026-06-22T01:34:20.2611213Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2611338Z               "line": 395
2026-06-22T01:34:20.2611419Z             }
2026-06-22T01:34:20.2611504Z           ]
2026-06-22T01:34:20.2611582Z         },
2026-06-22T01:34:20.2611672Z         "impl": {
2026-06-22T01:34:20.2611767Z           "complete": true,
2026-06-22T01:34:20.2611857Z           "evidence": [
2026-06-22T01:34:20.2611930Z             {
2026-06-22T01:34:20.2612049Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2612133Z               "line": 75
2026-06-22T01:34:20.2612211Z             }
2026-06-22T01:34:20.2612297Z           ]
2026-06-22T01:34:20.2612382Z         },
2026-06-22T01:34:20.2612463Z         "int": {
2026-06-22T01:34:20.2612554Z           "complete": false,
2026-06-22T01:34:20.2612644Z           "evidence": []
2026-06-22T01:34:20.2612726Z         },
2026-06-22T01:34:20.2612811Z         "unit": {
2026-06-22T01:34:20.2612917Z           "complete": true,
2026-06-22T01:34:20.2613015Z           "evidence": [
2026-06-22T01:34:20.2613097Z             {
2026-06-22T01:34:20.2613222Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2613307Z               "line": 632
2026-06-22T01:34:20.2613392Z             }
2026-06-22T01:34:20.2613468Z           ]
2026-06-22T01:34:20.2613554Z         }
2026-06-22T01:34:20.2613643Z       }
2026-06-22T01:34:20.2613723Z     },
2026-06-22T01:34:20.2613809Z     {
2026-06-22T01:34:20.2613924Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-22T01:34:20.2614094Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-22T01:34:20.2614187Z       "requiredStages": [
2026-06-22T01:34:20.2614277Z         "impl",
2026-06-22T01:34:20.2614366Z         "unit"
2026-06-22T01:34:20.2614449Z       ],
2026-06-22T01:34:20.2614530Z       "stages": {
2026-06-22T01:34:20.2614615Z         "doc": {
2026-06-22T01:34:20.2614710Z           "complete": false,
2026-06-22T01:34:20.2614920Z           "evidence": []
2026-06-22T01:34:20.2615015Z         },
2026-06-22T01:34:20.2615102Z         "impl": {
2026-06-22T01:34:20.2615273Z           "complete": true,
2026-06-22T01:34:20.2615359Z           "evidence": [
2026-06-22T01:34:20.2615441Z             {
2026-06-22T01:34:20.2615558Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.2615640Z               "line": 172
2026-06-22T01:34:20.2615732Z             },
2026-06-22T01:34:20.2615813Z             {
2026-06-22T01:34:20.2615925Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.2616020Z               "line": 18
2026-06-22T01:34:20.2616097Z             },
2026-06-22T01:34:20.2616186Z             {
2026-06-22T01:34:20.2616290Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.2616376Z               "line": 100
2026-06-22T01:34:20.2616448Z             }
2026-06-22T01:34:20.2616528Z           ]
2026-06-22T01:34:20.2616619Z         },
2026-06-22T01:34:20.2616705Z         "int": {
2026-06-22T01:34:20.2616805Z           "complete": false,
2026-06-22T01:34:20.2616890Z           "evidence": []
2026-06-22T01:34:20.2616986Z         },
2026-06-22T01:34:20.2617077Z         "unit": {
2026-06-22T01:34:20.2617158Z           "complete": true,
2026-06-22T01:34:20.2617253Z           "evidence": [
2026-06-22T01:34:20.2617340Z             {
2026-06-22T01:34:20.2617458Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.2617543Z               "line": 857
2026-06-22T01:34:20.2617630Z             },
2026-06-22T01:34:20.2617721Z             {
2026-06-22T01:34:20.2617821Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.2617906Z               "line": 161
2026-06-22T01:34:20.2617993Z             },
2026-06-22T01:34:20.2618078Z             {
2026-06-22T01:34:20.2618187Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.2618279Z               "line": 233
2026-06-22T01:34:20.2618356Z             }
2026-06-22T01:34:20.2618440Z           ]
2026-06-22T01:34:20.2618541Z         }
2026-06-22T01:34:20.2618623Z       }
2026-06-22T01:34:20.2618708Z     },
2026-06-22T01:34:20.2618792Z     {
2026-06-22T01:34:20.2618911Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-22T01:34:20.2619403Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-22T01:34:20.2619497Z       "requiredStages": [
2026-06-22T01:34:20.2619580Z         "impl",
2026-06-22T01:34:20.2619660Z         "unit"
2026-06-22T01:34:20.2619737Z       ],
2026-06-22T01:34:20.2619826Z       "stages": {
2026-06-22T01:34:20.2619904Z         "doc": {
2026-06-22T01:34:20.2620004Z           "complete": true,
2026-06-22T01:34:20.2620089Z           "evidence": [
2026-06-22T01:34:20.2620180Z             {
2026-06-22T01:34:20.2620285Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2620370Z               "line": 220
2026-06-22T01:34:20.2620465Z             }
2026-06-22T01:34:20.2620544Z           ]
2026-06-22T01:34:20.2620629Z         },
2026-06-22T01:34:20.2620718Z         "impl": {
2026-06-22T01:34:20.2620824Z           "complete": true,
2026-06-22T01:34:20.2620906Z           "evidence": [
2026-06-22T01:34:20.2620990Z             {
2026-06-22T01:34:20.2621118Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.2621204Z               "line": 316
2026-06-22T01:34:20.2621293Z             },
2026-06-22T01:34:20.2621378Z             {
2026-06-22T01:34:20.2621493Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.2621579Z               "line": 356
2026-06-22T01:34:20.2621664Z             },
2026-06-22T01:34:20.2621754Z             {
2026-06-22T01:34:20.2621870Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.2621951Z               "line": 578
2026-06-22T01:34:20.2622036Z             },
2026-06-22T01:34:20.2622122Z             {
2026-06-22T01:34:20.2622237Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:34:20.2622432Z               "line": 77
2026-06-22T01:34:20.2622623Z             }
2026-06-22T01:34:20.2622708Z           ]
2026-06-22T01:34:20.2622786Z         },
2026-06-22T01:34:20.2622871Z         "int": {
2026-06-22T01:34:20.2622966Z           "complete": false,
2026-06-22T01:34:20.2623052Z           "evidence": []
2026-06-22T01:34:20.2623138Z         },
2026-06-22T01:34:20.2623224Z         "unit": {
2026-06-22T01:34:20.2623309Z           "complete": true,
2026-06-22T01:34:20.2623411Z           "evidence": [
2026-06-22T01:34:20.2623491Z             {
2026-06-22T01:34:20.2623600Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.2623687Z               "line": 747
2026-06-22T01:34:20.2623768Z             },
2026-06-22T01:34:20.2623858Z             {
2026-06-22T01:34:20.2623961Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.2624047Z               "line": 785
2026-06-22T01:34:20.2624128Z             },
2026-06-22T01:34:20.2624212Z             {
2026-06-22T01:34:20.2624331Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:34:20.2624432Z               "line": 166
2026-06-22T01:34:20.2624522Z             }
2026-06-22T01:34:20.2624593Z           ]
2026-06-22T01:34:20.2624674Z         }
2026-06-22T01:34:20.2624761Z       }
2026-06-22T01:34:20.2624842Z     },
2026-06-22T01:34:20.2624926Z     {
2026-06-22T01:34:20.2625052Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-22T01:34:20.2625595Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-22T01:34:20.2625691Z       "requiredStages": [
2026-06-22T01:34:20.2625785Z         "impl",
2026-06-22T01:34:20.2625866Z         "unit"
2026-06-22T01:34:20.2625948Z       ],
2026-06-22T01:34:20.2626039Z       "stages": {
2026-06-22T01:34:20.2626123Z         "doc": {
2026-06-22T01:34:20.2626224Z           "complete": false,
2026-06-22T01:34:20.2626316Z           "evidence": []
2026-06-22T01:34:20.2626415Z         },
2026-06-22T01:34:20.2626490Z         "impl": {
2026-06-22T01:34:20.2626580Z           "complete": true,
2026-06-22T01:34:20.2626676Z           "evidence": [
2026-06-22T01:34:20.2626760Z             {
2026-06-22T01:34:20.2626883Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T01:34:20.2626969Z               "line": 22
2026-06-22T01:34:20.2627056Z             },
2026-06-22T01:34:20.2627136Z             {
2026-06-22T01:34:20.2627251Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.2627342Z               "line": 487
2026-06-22T01:34:20.2630081Z             },
2026-06-22T01:34:20.2630206Z             {
2026-06-22T01:34:20.2630344Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:34:20.2630435Z               "line": 17
2026-06-22T01:34:20.2630521Z             },
2026-06-22T01:34:20.2630621Z             {
2026-06-22T01:34:20.2630750Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:34:20.2630841Z               "line": 147
2026-06-22T01:34:20.2630921Z             },
2026-06-22T01:34:20.2630993Z             {
2026-06-22T01:34:20.2631118Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.2631198Z               "line": 226
2026-06-22T01:34:20.2631278Z             },
2026-06-22T01:34:20.2631365Z             {
2026-06-22T01:34:20.2631484Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.2631569Z               "line": 251
2026-06-22T01:34:20.2631654Z             },
2026-06-22T01:34:20.2631735Z             {
2026-06-22T01:34:20.2631853Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.2631938Z               "line": 277
2026-06-22T01:34:20.2632024Z             },
2026-06-22T01:34:20.2632100Z             {
2026-06-22T01:34:20.2632229Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.2632440Z               "line": 124
2026-06-22T01:34:20.2632525Z             },
2026-06-22T01:34:20.2632702Z             {
2026-06-22T01:34:20.2632825Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.2632916Z               "line": 224
2026-06-22T01:34:20.2632997Z             }
2026-06-22T01:34:20.2633078Z           ]
2026-06-22T01:34:20.2633159Z         },
2026-06-22T01:34:20.2633249Z         "int": {
2026-06-22T01:34:20.2633331Z           "complete": false,
2026-06-22T01:34:20.2633417Z           "evidence": []
2026-06-22T01:34:20.2633502Z         },
2026-06-22T01:34:20.2633587Z         "unit": {
2026-06-22T01:34:20.2633685Z           "complete": true,
2026-06-22T01:34:20.2633769Z           "evidence": [
2026-06-22T01:34:20.2633851Z             {
2026-06-22T01:34:20.2633980Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T01:34:20.2634070Z               "line": 63
2026-06-22T01:34:20.2634155Z             },
2026-06-22T01:34:20.2634242Z             {
2026-06-22T01:34:20.2634357Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T01:34:20.2634451Z               "line": 73
2026-06-22T01:34:20.2634545Z             },
2026-06-22T01:34:20.2634627Z             {
2026-06-22T01:34:20.2634749Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T01:34:20.2634838Z               "line": 85
2026-06-22T01:34:20.2634920Z             },
2026-06-22T01:34:20.2635002Z             {
2026-06-22T01:34:20.2635120Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:34:20.2635206Z               "line": 346
2026-06-22T01:34:20.2635292Z             },
2026-06-22T01:34:20.2635373Z             {
2026-06-22T01:34:20.2635491Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:34:20.2635584Z               "line": 281
2026-06-22T01:34:20.2635655Z             },
2026-06-22T01:34:20.2635736Z             {
2026-06-22T01:34:20.2635855Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:34:20.2635955Z               "line": 322
2026-06-22T01:34:20.2636040Z             },
2026-06-22T01:34:20.2636135Z             {
2026-06-22T01:34:20.2636237Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:34:20.2636317Z               "line": 360
2026-06-22T01:34:20.2636398Z             },
2026-06-22T01:34:20.2636479Z             {
2026-06-22T01:34:20.2636614Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.2636702Z               "line": 688
2026-06-22T01:34:20.2636779Z             },
2026-06-22T01:34:20.2636862Z             {
2026-06-22T01:34:20.2636985Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.2637064Z               "line": 397
2026-06-22T01:34:20.2637150Z             },
2026-06-22T01:34:20.2637241Z             {
2026-06-22T01:34:20.2637358Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.2637443Z               "line": 440
2026-06-22T01:34:20.2637525Z             }
2026-06-22T01:34:20.2637607Z           ]
2026-06-22T01:34:20.2637682Z         }
2026-06-22T01:34:20.2637763Z       }
2026-06-22T01:34:20.2637859Z     },
2026-06-22T01:34:20.2637940Z     {
2026-06-22T01:34:20.2638044Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-22T01:34:20.2638259Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-22T01:34:20.2638358Z       "requiredStages": [
2026-06-22T01:34:20.2638436Z         "impl",
2026-06-22T01:34:20.2638522Z         "unit"
2026-06-22T01:34:20.2638612Z       ],
2026-06-22T01:34:20.2638688Z       "stages": {
2026-06-22T01:34:20.2638775Z         "doc": {
2026-06-22T01:34:20.2638865Z           "complete": false,
2026-06-22T01:34:20.2639050Z           "evidence": []
2026-06-22T01:34:20.2639133Z         },
2026-06-22T01:34:20.2639222Z         "impl": {
2026-06-22T01:34:20.2639312Z           "complete": true,
2026-06-22T01:34:20.2639400Z           "evidence": [
2026-06-22T01:34:20.2639486Z             {
2026-06-22T01:34:20.2639715Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T01:34:20.2639796Z               "line": 169
2026-06-22T01:34:20.2639970Z             }
2026-06-22T01:34:20.2640060Z           ]
2026-06-22T01:34:20.2640142Z         },
2026-06-22T01:34:20.2640227Z         "int": {
2026-06-22T01:34:20.2640322Z           "complete": true,
2026-06-22T01:34:20.2640399Z           "evidence": [
2026-06-22T01:34:20.2640485Z             {
2026-06-22T01:34:20.2640589Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T01:34:20.2640671Z               "line": 44
2026-06-22T01:34:20.2640757Z             },
2026-06-22T01:34:20.2640843Z             {
2026-06-22T01:34:20.2640947Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T01:34:20.2641029Z               "line": 66
2026-06-22T01:34:20.2641119Z             }
2026-06-22T01:34:20.2641195Z           ]
2026-06-22T01:34:20.2641276Z         },
2026-06-22T01:34:20.2641368Z         "unit": {
2026-06-22T01:34:20.2641448Z           "complete": true,
2026-06-22T01:34:20.2641538Z           "evidence": [
2026-06-22T01:34:20.2641620Z             {
2026-06-22T01:34:20.2641744Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T01:34:20.2641829Z               "line": 186
2026-06-22T01:34:20.2641915Z             },
2026-06-22T01:34:20.2641993Z             {
2026-06-22T01:34:20.2642091Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T01:34:20.2642172Z               "line": 238
2026-06-22T01:34:20.2642262Z             },
2026-06-22T01:34:20.2642344Z             {
2026-06-22T01:34:20.2642446Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T01:34:20.2642531Z               "line": 266
2026-06-22T01:34:20.2642617Z             }
2026-06-22T01:34:20.2642699Z           ]
2026-06-22T01:34:20.2642789Z         }
2026-06-22T01:34:20.2642869Z       }
2026-06-22T01:34:20.2642956Z     },
2026-06-22T01:34:20.2643028Z     {
2026-06-22T01:34:20.2643151Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-22T01:34:20.2649717Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-22T01:34:20.2649993Z       "requiredStages": [
2026-06-22T01:34:20.2650245Z         "impl",
2026-06-22T01:34:20.2650327Z         "unit",
2026-06-22T01:34:20.2650403Z         "int"
2026-06-22T01:34:20.2650492Z       ],
2026-06-22T01:34:20.2650577Z       "stages": {
2026-06-22T01:34:20.2650664Z         "doc": {
2026-06-22T01:34:20.2650760Z           "complete": false,
2026-06-22T01:34:20.2650844Z           "evidence": []
2026-06-22T01:34:20.2650931Z         },
2026-06-22T01:34:20.2651021Z         "impl": {
2026-06-22T01:34:20.2651121Z           "complete": true,
2026-06-22T01:34:20.2651207Z           "evidence": [
2026-06-22T01:34:20.2651289Z             {
2026-06-22T01:34:20.2651408Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.2651497Z               "line": 109
2026-06-22T01:34:20.2651570Z             },
2026-06-22T01:34:20.2651651Z             {
2026-06-22T01:34:20.2651769Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.2651870Z               "line": 156
2026-06-22T01:34:20.2651952Z             },
2026-06-22T01:34:20.2652032Z             {
2026-06-22T01:34:20.2652141Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.2652228Z               "line": 261
2026-06-22T01:34:20.2652314Z             },
2026-06-22T01:34:20.2652394Z             {
2026-06-22T01:34:20.2652514Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2652605Z               "line": 954
2026-06-22T01:34:20.2652689Z             }
2026-06-22T01:34:20.2652770Z           ]
2026-06-22T01:34:20.2652851Z         },
2026-06-22T01:34:20.2652937Z         "int": {
2026-06-22T01:34:20.2653039Z           "complete": true,
2026-06-22T01:34:20.2653120Z           "evidence": [
2026-06-22T01:34:20.2653202Z             {
2026-06-22T01:34:20.2653326Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.2653416Z               "line": 1051
2026-06-22T01:34:20.2653512Z             }
2026-06-22T01:34:20.2653588Z           ]
2026-06-22T01:34:20.2653673Z         },
2026-06-22T01:34:20.2653763Z         "unit": {
2026-06-22T01:34:20.2653861Z           "complete": true,
2026-06-22T01:34:20.2653936Z           "evidence": [
2026-06-22T01:34:20.2654012Z             {
2026-06-22T01:34:20.2654122Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2654199Z               "line": 1498
2026-06-22T01:34:20.2654275Z             }
2026-06-22T01:34:20.2654365Z           ]
2026-06-22T01:34:20.2654446Z         }
2026-06-22T01:34:20.2654532Z       }
2026-06-22T01:34:20.2654613Z     },
2026-06-22T01:34:20.2654694Z     {
2026-06-22T01:34:20.2654838Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-22T01:34:20.2657658Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-22T01:34:20.2657766Z       "requiredStages": [],
2026-06-22T01:34:20.2657842Z       "stages": {
2026-06-22T01:34:20.2657924Z         "doc": {
2026-06-22T01:34:20.2658015Z           "complete": false,
2026-06-22T01:34:20.2658095Z           "evidence": []
2026-06-22T01:34:20.2658280Z         },
2026-06-22T01:34:20.2658366Z         "impl": {
2026-06-22T01:34:20.2658464Z           "complete": false,
2026-06-22T01:34:20.2658664Z           "evidence": []
2026-06-22T01:34:20.2658741Z         },
2026-06-22T01:34:20.2658826Z         "int": {
2026-06-22T01:34:20.2658912Z           "complete": false,
2026-06-22T01:34:20.2659084Z           "evidence": []
2026-06-22T01:34:20.2659155Z         },
2026-06-22T01:34:20.2659241Z         "unit": {
2026-06-22T01:34:20.2659337Z           "complete": false,
2026-06-22T01:34:20.2659427Z           "evidence": []
2026-06-22T01:34:20.2659512Z         }
2026-06-22T01:34:20.2659599Z       }
2026-06-22T01:34:20.2659680Z     },
2026-06-22T01:34:20.2659766Z     {
2026-06-22T01:34:20.2659890Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-22T01:34:20.2664167Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-22T01:34:20.2664338Z       "requiredStages": [],
2026-06-22T01:34:20.2664421Z       "stages": {
2026-06-22T01:34:20.2664501Z         "doc": {
2026-06-22T01:34:20.2664600Z           "complete": false,
2026-06-22T01:34:20.2664683Z           "evidence": []
2026-06-22T01:34:20.2664773Z         },
2026-06-22T01:34:20.2664859Z         "impl": {
2026-06-22T01:34:20.2664949Z           "complete": false,
2026-06-22T01:34:20.2665031Z           "evidence": []
2026-06-22T01:34:20.2665116Z         },
2026-06-22T01:34:20.2665197Z         "int": {
2026-06-22T01:34:20.2665273Z           "complete": false,
2026-06-22T01:34:20.2665365Z           "evidence": []
2026-06-22T01:34:20.2665445Z         },
2026-06-22T01:34:20.2665526Z         "unit": {
2026-06-22T01:34:20.2665622Z           "complete": false,
2026-06-22T01:34:20.2665708Z           "evidence": []
2026-06-22T01:34:20.2665797Z         }
2026-06-22T01:34:20.2665879Z       }
2026-06-22T01:34:20.2665966Z     },
2026-06-22T01:34:20.2666051Z     {
2026-06-22T01:34:20.2666188Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-22T01:34:20.2680237Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-22T01:34:20.2680824Z       "requiredStages": [
2026-06-22T01:34:20.2681005Z         "doc",
2026-06-22T01:34:20.2681096Z         "impl",
2026-06-22T01:34:20.2681172Z         "unit",
2026-06-22T01:34:20.2681253Z         "int"
2026-06-22T01:34:20.2681340Z       ],
2026-06-22T01:34:20.2681425Z       "stages": {
2026-06-22T01:34:20.2681505Z         "doc": {
2026-06-22T01:34:20.2681591Z           "complete": true,
2026-06-22T01:34:20.2681679Z           "evidence": [
2026-06-22T01:34:20.2681768Z             {
2026-06-22T01:34:20.2681878Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2681969Z               "line": 468
2026-06-22T01:34:20.2682050Z             }
2026-06-22T01:34:20.2682134Z           ]
2026-06-22T01:34:20.2682219Z         },
2026-06-22T01:34:20.2682311Z         "impl": {
2026-06-22T01:34:20.2682407Z           "complete": true,
2026-06-22T01:34:20.2682506Z           "evidence": [
2026-06-22T01:34:20.2682587Z             {
2026-06-22T01:34:20.2682716Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2682806Z               "line": 348
2026-06-22T01:34:20.2682902Z             },
2026-06-22T01:34:20.2682988Z             {
2026-06-22T01:34:20.2683098Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2683182Z               "line": 1282
2026-06-22T01:34:20.2683270Z             },
2026-06-22T01:34:20.2683355Z             {
2026-06-22T01:34:20.2683483Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2683570Z               "line": 853
2026-06-22T01:34:20.2683651Z             }
2026-06-22T01:34:20.2683731Z           ]
2026-06-22T01:34:20.2683817Z         },
2026-06-22T01:34:20.2683905Z         "int": {
2026-06-22T01:34:20.2683999Z           "complete": true,
2026-06-22T01:34:20.2684094Z           "evidence": [
2026-06-22T01:34:20.2684175Z             {
2026-06-22T01:34:20.2684299Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.2684403Z               "line": 1206
2026-06-22T01:34:20.2684488Z             },
2026-06-22T01:34:20.2684569Z             {
2026-06-22T01:34:20.2684743Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.2684834Z               "line": 1307
2026-06-22T01:34:20.2684926Z             },
2026-06-22T01:34:20.2685011Z             {
2026-06-22T01:34:20.2685134Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:34:20.2685221Z               "line": 1169
2026-06-22T01:34:20.2685312Z             }
2026-06-22T01:34:20.2685401Z           ]
2026-06-22T01:34:20.2685483Z         },
2026-06-22T01:34:20.2685574Z         "unit": {
2026-06-22T01:34:20.2685655Z           "complete": true,
2026-06-22T01:34:20.2685749Z           "evidence": [
2026-06-22T01:34:20.2685831Z             {
2026-06-22T01:34:20.2685950Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2686035Z               "line": 3125
2026-06-22T01:34:20.2686127Z             }
2026-06-22T01:34:20.2686222Z           ]
2026-06-22T01:34:20.2686303Z         }
2026-06-22T01:34:20.2686388Z       }
2026-06-22T01:34:20.2686475Z     },
2026-06-22T01:34:20.2686551Z     {
2026-06-22T01:34:20.2686670Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-22T01:34:20.2687105Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-22T01:34:20.2687209Z       "requiredStages": [
2026-06-22T01:34:20.2687294Z         "impl",
2026-06-22T01:34:20.2687384Z         "unit",
2026-06-22T01:34:20.2687465Z         "int"
2026-06-22T01:34:20.2687559Z       ],
2026-06-22T01:34:20.2687644Z       "stages": {
2026-06-22T01:34:20.2687735Z         "doc": {
2026-06-22T01:34:20.2687835Z           "complete": false,
2026-06-22T01:34:20.2687925Z           "evidence": []
2026-06-22T01:34:20.2688011Z         },
2026-06-22T01:34:20.2688093Z         "impl": {
2026-06-22T01:34:20.2688189Z           "complete": true,
2026-06-22T01:34:20.2688360Z           "evidence": [
2026-06-22T01:34:20.2688446Z             {
2026-06-22T01:34:20.2688650Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2688732Z               "line": 178
2026-06-22T01:34:20.2688817Z             },
2026-06-22T01:34:20.2688898Z             {
2026-06-22T01:34:20.2689108Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2689194Z               "line": 226
2026-06-22T01:34:20.2689284Z             },
2026-06-22T01:34:20.2689371Z             {
2026-06-22T01:34:20.2689494Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.2689575Z               "line": 79
2026-06-22T01:34:20.2689657Z             },
2026-06-22T01:34:20.2689738Z             {
2026-06-22T01:34:20.2689846Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.2689946Z               "line": 52
2026-06-22T01:34:20.2690032Z             },
2026-06-22T01:34:20.2690116Z             {
2026-06-22T01:34:20.2690239Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2690326Z               "line": 263
2026-06-22T01:34:20.2690417Z             },
2026-06-22T01:34:20.2690501Z             {
2026-06-22T01:34:20.2690626Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:34:20.2690707Z               "line": 27
2026-06-22T01:34:20.2690792Z             },
2026-06-22T01:34:20.2690878Z             {
2026-06-22T01:34:20.2690994Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:34:20.2691079Z               "line": 79
2026-06-22T01:34:20.2691169Z             },
2026-06-22T01:34:20.2691256Z             {
2026-06-22T01:34:20.2691365Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:34:20.2691460Z               "line": 102
2026-06-22T01:34:20.2691536Z             },
2026-06-22T01:34:20.2691628Z             {
2026-06-22T01:34:20.2691737Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.2691832Z               "line": 116
2026-06-22T01:34:20.2691919Z             }
2026-06-22T01:34:20.2691994Z           ]
2026-06-22T01:34:20.2692094Z         },
2026-06-22T01:34:20.2692176Z         "int": {
2026-06-22T01:34:20.2692277Z           "complete": true,
2026-06-22T01:34:20.2692356Z           "evidence": [
2026-06-22T01:34:20.2692443Z             {
2026-06-22T01:34:20.2692582Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T01:34:20.2692671Z               "line": 43
2026-06-22T01:34:20.2692756Z             }
2026-06-22T01:34:20.2692846Z           ]
2026-06-22T01:34:20.2692933Z         },
2026-06-22T01:34:20.2693018Z         "unit": {
2026-06-22T01:34:20.2693108Z           "complete": true,
2026-06-22T01:34:20.2693200Z           "evidence": [
2026-06-22T01:34:20.2693291Z             {
2026-06-22T01:34:20.2693418Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2693511Z               "line": 678
2026-06-22T01:34:20.2693601Z             },
2026-06-22T01:34:20.2693690Z             {
2026-06-22T01:34:20.2693805Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2693901Z               "line": 495
2026-06-22T01:34:20.2693987Z             },
2026-06-22T01:34:20.2694076Z             {
2026-06-22T01:34:20.2694192Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:34:20.2694277Z               "line": 124
2026-06-22T01:34:20.2694363Z             },
2026-06-22T01:34:20.2694445Z             {
2026-06-22T01:34:20.2694564Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:34:20.2694639Z               "line": 143
2026-06-22T01:34:20.2694730Z             },
2026-06-22T01:34:20.2694803Z             {
2026-06-22T01:34:20.2694930Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:34:20.2695015Z               "line": 160
2026-06-22T01:34:20.2695096Z             },
2026-06-22T01:34:20.2695186Z             {
2026-06-22T01:34:20.2695294Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:34:20.2695519Z               "line": 187
2026-06-22T01:34:20.2695604Z             },
2026-06-22T01:34:20.2695695Z             {
2026-06-22T01:34:20.2695900Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:34:20.2695985Z               "line": 206
2026-06-22T01:34:20.2696068Z             },
2026-06-22T01:34:20.2696148Z             {
2026-06-22T01:34:20.2696262Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.2696348Z               "line": 229
2026-06-22T01:34:20.2696435Z             }
2026-06-22T01:34:20.2696525Z           ]
2026-06-22T01:34:20.2696610Z         }
2026-06-22T01:34:20.2696697Z       }
2026-06-22T01:34:20.2696768Z     },
2026-06-22T01:34:20.2696854Z     {
2026-06-22T01:34:20.2696978Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-22T01:34:20.2697617Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-22T01:34:20.2697732Z       "requiredStages": [
2026-06-22T01:34:20.2697816Z         "impl",
2026-06-22T01:34:20.2697901Z         "unit"
2026-06-22T01:34:20.2697988Z       ],
2026-06-22T01:34:20.2698086Z       "stages": {
2026-06-22T01:34:20.2698161Z         "doc": {
2026-06-22T01:34:20.2698256Z           "complete": false,
2026-06-22T01:34:20.2698358Z           "evidence": []
2026-06-22T01:34:20.2698439Z         },
2026-06-22T01:34:20.2698523Z         "impl": {
2026-06-22T01:34:20.2698615Z           "complete": true,
2026-06-22T01:34:20.2698710Z           "evidence": [
2026-06-22T01:34:20.2698791Z             {
2026-06-22T01:34:20.2698910Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2699097Z               "line": 1329
2026-06-22T01:34:20.2699181Z             },
2026-06-22T01:34:20.2699259Z             {
2026-06-22T01:34:20.2699372Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2699458Z               "line": 1585
2026-06-22T01:34:20.2699549Z             }
2026-06-22T01:34:20.2699640Z           ]
2026-06-22T01:34:20.2699725Z         },
2026-06-22T01:34:20.2699801Z         "int": {
2026-06-22T01:34:20.2699898Z           "complete": false,
2026-06-22T01:34:20.2699984Z           "evidence": []
2026-06-22T01:34:20.2700068Z         },
2026-06-22T01:34:20.2700155Z         "unit": {
2026-06-22T01:34:20.2700237Z           "complete": true,
2026-06-22T01:34:20.2700331Z           "evidence": [
2026-06-22T01:34:20.2700416Z             {
2026-06-22T01:34:20.2700544Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T01:34:20.2700625Z               "line": 161
2026-06-22T01:34:20.2700714Z             }
2026-06-22T01:34:20.2700799Z           ]
2026-06-22T01:34:20.2700881Z         }
2026-06-22T01:34:20.2700968Z       }
2026-06-22T01:34:20.2701052Z     },
2026-06-22T01:34:20.2701138Z     {
2026-06-22T01:34:20.2701248Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-22T01:34:20.2703012Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-22T01:34:20.2703123Z       "requiredStages": [
2026-06-22T01:34:20.2703198Z         "impl",
2026-06-22T01:34:20.2703293Z         "unit"
2026-06-22T01:34:20.2703378Z       ],
2026-06-22T01:34:20.2703465Z       "stages": {
2026-06-22T01:34:20.2703546Z         "doc": {
2026-06-22T01:34:20.2703636Z           "complete": false,
2026-06-22T01:34:20.2703736Z           "evidence": []
2026-06-22T01:34:20.2703979Z         },
2026-06-22T01:34:20.2704066Z         "impl": {
2026-06-22T01:34:20.2704270Z           "complete": true,
2026-06-22T01:34:20.2704361Z           "evidence": [
2026-06-22T01:34:20.2704451Z             {
2026-06-22T01:34:20.2704565Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.2704656Z               "line": 257
2026-06-22T01:34:20.2704743Z             }
2026-06-22T01:34:20.2704833Z           ]
2026-06-22T01:34:20.2704914Z         },
2026-06-22T01:34:20.2705005Z         "int": {
2026-06-22T01:34:20.2705095Z           "complete": false,
2026-06-22T01:34:20.2705181Z           "evidence": []
2026-06-22T01:34:20.2705266Z         },
2026-06-22T01:34:20.2705354Z         "unit": {
2026-06-22T01:34:20.2705452Z           "complete": true,
2026-06-22T01:34:20.2705542Z           "evidence": [
2026-06-22T01:34:20.2705632Z             {
2026-06-22T01:34:20.2705784Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.2705878Z               "line": 360
2026-06-22T01:34:20.2705978Z             }
2026-06-22T01:34:20.2706065Z           ]
2026-06-22T01:34:20.2706160Z         }
2026-06-22T01:34:20.2706245Z       }
2026-06-22T01:34:20.2706327Z     },
2026-06-22T01:34:20.2706403Z     {
2026-06-22T01:34:20.2706517Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-22T01:34:20.2708320Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-22T01:34:20.2708438Z       "requiredStages": [
2026-06-22T01:34:20.2708514Z         "impl",
2026-06-22T01:34:20.2708604Z         "unit"
2026-06-22T01:34:20.2708708Z       ],
2026-06-22T01:34:20.2708793Z       "stages": {
2026-06-22T01:34:20.2708879Z         "doc": {
2026-06-22T01:34:20.2709064Z           "complete": false,
2026-06-22T01:34:20.2709165Z           "evidence": []
2026-06-22T01:34:20.2709252Z         },
2026-06-22T01:34:20.2709337Z         "impl": {
2026-06-22T01:34:20.2709417Z           "complete": true,
2026-06-22T01:34:20.2709518Z           "evidence": [
2026-06-22T01:34:20.2709595Z             {
2026-06-22T01:34:20.2709722Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2709819Z               "line": 1018
2026-06-22T01:34:20.2709905Z             },
2026-06-22T01:34:20.2709981Z             {
2026-06-22T01:34:20.2710100Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2710186Z               "line": 283
2026-06-22T01:34:20.2710266Z             },
2026-06-22T01:34:20.2710357Z             {
2026-06-22T01:34:20.2710477Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2710572Z               "line": 316
2026-06-22T01:34:20.2710662Z             },
2026-06-22T01:34:20.2710749Z             {
2026-06-22T01:34:20.2710873Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T01:34:20.2710961Z               "line": 26
2026-06-22T01:34:20.2711038Z             }
2026-06-22T01:34:20.2711128Z           ]
2026-06-22T01:34:20.2711213Z         },
2026-06-22T01:34:20.2711298Z         "int": {
2026-06-22T01:34:20.2711378Z           "complete": false,
2026-06-22T01:34:20.2711470Z           "evidence": []
2026-06-22T01:34:20.2711542Z         },
2026-06-22T01:34:20.2711636Z         "unit": {
2026-06-22T01:34:20.2711737Z           "complete": true,
2026-06-22T01:34:20.2711818Z           "evidence": [
2026-06-22T01:34:20.2711918Z             {
2026-06-22T01:34:20.2712027Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T01:34:20.2712228Z               "line": 271
2026-06-22T01:34:20.2712308Z             },
2026-06-22T01:34:20.2712395Z             {
2026-06-22T01:34:20.2712594Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T01:34:20.2712686Z               "line": 348
2026-06-22T01:34:20.2712767Z             }
2026-06-22T01:34:20.2712853Z           ]
2026-06-22T01:34:20.2712938Z         }
2026-06-22T01:34:20.2713020Z       }
2026-06-22T01:34:20.2713115Z     },
2026-06-22T01:34:20.2713201Z     {
2026-06-22T01:34:20.2713306Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-22T01:34:20.2713495Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-22T01:34:20.2713592Z       "requiredStages": [
2026-06-22T01:34:20.2713678Z         "impl",
2026-06-22T01:34:20.2713768Z         "unit"
2026-06-22T01:34:20.2713853Z       ],
2026-06-22T01:34:20.2713948Z       "stages": {
2026-06-22T01:34:20.2714030Z         "doc": {
2026-06-22T01:34:20.2714125Z           "complete": false,
2026-06-22T01:34:20.2714215Z           "evidence": []
2026-06-22T01:34:20.2714301Z         },
2026-06-22T01:34:20.2714387Z         "impl": {
2026-06-22T01:34:20.2714477Z           "complete": true,
2026-06-22T01:34:20.2714572Z           "evidence": [
2026-06-22T01:34:20.2714660Z             {
2026-06-22T01:34:20.2714768Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2714858Z               "line": 40
2026-06-22T01:34:20.2714945Z             },
2026-06-22T01:34:20.2715026Z             {
2026-06-22T01:34:20.2715130Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2715216Z               "line": 103
2026-06-22T01:34:20.2715299Z             },
2026-06-22T01:34:20.2715388Z             {
2026-06-22T01:34:20.2715493Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2715594Z               "line": 218
2026-06-22T01:34:20.2715679Z             },
2026-06-22T01:34:20.2715755Z             {
2026-06-22T01:34:20.2715875Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2715966Z               "line": 323
2026-06-22T01:34:20.2716055Z             }
2026-06-22T01:34:20.2716150Z           ]
2026-06-22T01:34:20.2716231Z         },
2026-06-22T01:34:20.2716311Z         "int": {
2026-06-22T01:34:20.2716405Z           "complete": false,
2026-06-22T01:34:20.2716505Z           "evidence": []
2026-06-22T01:34:20.2716591Z         },
2026-06-22T01:34:20.2716681Z         "unit": {
2026-06-22T01:34:20.2716776Z           "complete": true,
2026-06-22T01:34:20.2716873Z           "evidence": [
2026-06-22T01:34:20.2716963Z             {
2026-06-22T01:34:20.2717072Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2717168Z               "line": 361
2026-06-22T01:34:20.2717245Z             },
2026-06-22T01:34:20.2717325Z             {
2026-06-22T01:34:20.2717429Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2717512Z               "line": 433
2026-06-22T01:34:20.2717597Z             },
2026-06-22T01:34:20.2717683Z             {
2026-06-22T01:34:20.2717793Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2717888Z               "line": 496
2026-06-22T01:34:20.2717974Z             },
2026-06-22T01:34:20.2718069Z             {
2026-06-22T01:34:20.2718175Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2718269Z               "line": 517
2026-06-22T01:34:20.2718350Z             }
2026-06-22T01:34:20.2718437Z           ]
2026-06-22T01:34:20.2718513Z         }
2026-06-22T01:34:20.2718603Z       }
2026-06-22T01:34:20.2718680Z     },
2026-06-22T01:34:20.2718761Z     {
2026-06-22T01:34:20.2718880Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-22T01:34:20.2721255Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-22T01:34:20.2721583Z       "requiredStages": [
2026-06-22T01:34:20.2721670Z         "impl",
2026-06-22T01:34:20.2721745Z         "unit"
2026-06-22T01:34:20.2721834Z       ],
2026-06-22T01:34:20.2721924Z       "stages": {
2026-06-22T01:34:20.2722010Z         "doc": {
2026-06-22T01:34:20.2722102Z           "complete": false,
2026-06-22T01:34:20.2722191Z           "evidence": []
2026-06-22T01:34:20.2722277Z         },
2026-06-22T01:34:20.2722364Z         "impl": {
2026-06-22T01:34:20.2722469Z           "complete": true,
2026-06-22T01:34:20.2722582Z           "evidence": [
2026-06-22T01:34:20.2722665Z             {
2026-06-22T01:34:20.2722793Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.2722893Z               "line": 402
2026-06-22T01:34:20.2722974Z             },
2026-06-22T01:34:20.2723059Z             {
2026-06-22T01:34:20.2723183Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.2723275Z               "line": 446
2026-06-22T01:34:20.2723356Z             }
2026-06-22T01:34:20.2723442Z           ]
2026-06-22T01:34:20.2723527Z         },
2026-06-22T01:34:20.2723618Z         "int": {
2026-06-22T01:34:20.2723703Z           "complete": false,
2026-06-22T01:34:20.2723803Z           "evidence": []
2026-06-22T01:34:20.2723886Z         },
2026-06-22T01:34:20.2723981Z         "unit": {
2026-06-22T01:34:20.2724065Z           "complete": true,
2026-06-22T01:34:20.2724162Z           "evidence": [
2026-06-22T01:34:20.2724248Z             {
2026-06-22T01:34:20.2724366Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.2724460Z               "line": 910
2026-06-22T01:34:20.2724546Z             }
2026-06-22T01:34:20.2724633Z           ]
2026-06-22T01:34:20.2724718Z         }
2026-06-22T01:34:20.2724808Z       }
2026-06-22T01:34:20.2724895Z     },
2026-06-22T01:34:20.2724966Z     {
2026-06-22T01:34:20.2725089Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-22T01:34:20.2725220Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-22T01:34:20.2725320Z       "requiredStages": [
2026-06-22T01:34:20.2725404Z         "impl",
2026-06-22T01:34:20.2725496Z         "unit"
2026-06-22T01:34:20.2725586Z       ],
2026-06-22T01:34:20.2725672Z       "stages": {
2026-06-22T01:34:20.2725753Z         "doc": {
2026-06-22T01:34:20.2725839Z           "complete": false,
2026-06-22T01:34:20.2725938Z           "evidence": []
2026-06-22T01:34:20.2726019Z         },
2026-06-22T01:34:20.2726116Z         "impl": {
2026-06-22T01:34:20.2726211Z           "complete": true,
2026-06-22T01:34:20.2726300Z           "evidence": [
2026-06-22T01:34:20.2729225Z             {
2026-06-22T01:34:20.2729403Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2729497Z               "line": 116
2026-06-22T01:34:20.2729586Z             },
2026-06-22T01:34:20.2729668Z             {
2026-06-22T01:34:20.2729799Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2729884Z               "line": 211
2026-06-22T01:34:20.2729966Z             }
2026-06-22T01:34:20.2730057Z           ]
2026-06-22T01:34:20.2730137Z         },
2026-06-22T01:34:20.2730222Z         "int": {
2026-06-22T01:34:20.2730320Z           "complete": false,
2026-06-22T01:34:20.2730405Z           "evidence": []
2026-06-22T01:34:20.2730490Z         },
2026-06-22T01:34:20.2730571Z         "unit": {
2026-06-22T01:34:20.2730658Z           "complete": true,
2026-06-22T01:34:20.2730753Z           "evidence": [
2026-06-22T01:34:20.2730838Z             {
2026-06-22T01:34:20.2731101Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2731191Z               "line": 388
2026-06-22T01:34:20.2731363Z             },
2026-06-22T01:34:20.2731444Z             {
2026-06-22T01:34:20.2731549Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.2731640Z               "line": 469
2026-06-22T01:34:20.2731725Z             }
2026-06-22T01:34:20.2731811Z           ]
2026-06-22T01:34:20.2731898Z         }
2026-06-22T01:34:20.2731979Z       }
2026-06-22T01:34:20.2732064Z     },
2026-06-22T01:34:20.2732143Z     {
2026-06-22T01:34:20.2732272Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-22T01:34:20.2733386Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-22T01:34:20.2733492Z       "requiredStages": [
2026-06-22T01:34:20.2733577Z         "impl",
2026-06-22T01:34:20.2733668Z         "unit"
2026-06-22T01:34:20.2733758Z       ],
2026-06-22T01:34:20.2733845Z       "stages": {
2026-06-22T01:34:20.2733930Z         "doc": {
2026-06-22T01:34:20.2734020Z           "complete": true,
2026-06-22T01:34:20.2734102Z           "evidence": [
2026-06-22T01:34:20.2734188Z             {
2026-06-22T01:34:20.2734301Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2734397Z               "line": 206
2026-06-22T01:34:20.2734474Z             }
2026-06-22T01:34:20.2734564Z           ]
2026-06-22T01:34:20.2734645Z         },
2026-06-22T01:34:20.2734736Z         "impl": {
2026-06-22T01:34:20.2734832Z           "complete": true,
2026-06-22T01:34:20.2734916Z           "evidence": [
2026-06-22T01:34:20.2734992Z             {
2026-06-22T01:34:20.2735111Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2735213Z               "line": 691
2026-06-22T01:34:20.2735287Z             },
2026-06-22T01:34:20.2735373Z             {
2026-06-22T01:34:20.2735489Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2735579Z               "line": 791
2026-06-22T01:34:20.2735664Z             },
2026-06-22T01:34:20.2735746Z             {
2026-06-22T01:34:20.2735865Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2735954Z               "line": 1120
2026-06-22T01:34:20.2736041Z             },
2026-06-22T01:34:20.2736127Z             {
2026-06-22T01:34:20.2736251Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.2736336Z               "line": 184
2026-06-22T01:34:20.2736419Z             }
2026-06-22T01:34:20.2736503Z           ]
2026-06-22T01:34:20.2736594Z         },
2026-06-22T01:34:20.2736676Z         "int": {
2026-06-22T01:34:20.2736771Z           "complete": false,
2026-06-22T01:34:20.2736860Z           "evidence": []
2026-06-22T01:34:20.2736957Z         },
2026-06-22T01:34:20.2737039Z         "unit": {
2026-06-22T01:34:20.2737124Z           "complete": true,
2026-06-22T01:34:20.2737218Z           "evidence": [
2026-06-22T01:34:20.2737308Z             {
2026-06-22T01:34:20.2737427Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2737511Z               "line": 1169
2026-06-22T01:34:20.2737596Z             },
2026-06-22T01:34:20.2737683Z             {
2026-06-22T01:34:20.2737812Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T01:34:20.2737897Z               "line": 44
2026-06-22T01:34:20.2737978Z             },
2026-06-22T01:34:20.2738065Z             {
2026-06-22T01:34:20.2738188Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T01:34:20.2738279Z               "line": 52
2026-06-22T01:34:20.2738365Z             },
2026-06-22T01:34:20.2738446Z             {
2026-06-22T01:34:20.2738564Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T01:34:20.2738727Z               "line": 57
2026-06-22T01:34:20.2738812Z             },
2026-06-22T01:34:20.2738893Z             {
2026-06-22T01:34:20.2739213Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T01:34:20.2739291Z               "line": 54
2026-06-22T01:34:20.2739370Z             }
2026-06-22T01:34:20.2739452Z           ]
2026-06-22T01:34:20.2739538Z         }
2026-06-22T01:34:20.2739625Z       }
2026-06-22T01:34:20.2739708Z     },
2026-06-22T01:34:20.2739790Z     {
2026-06-22T01:34:20.2739920Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-22T01:34:20.2740128Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-22T01:34:20.2740223Z       "requiredStages": [
2026-06-22T01:34:20.2740299Z         "impl",
2026-06-22T01:34:20.2740388Z         "unit"
2026-06-22T01:34:20.2740473Z       ],
2026-06-22T01:34:20.2740569Z       "stages": {
2026-06-22T01:34:20.2740651Z         "doc": {
2026-06-22T01:34:20.2740735Z           "complete": false,
2026-06-22T01:34:20.2740836Z           "evidence": []
2026-06-22T01:34:20.2740913Z         },
2026-06-22T01:34:20.2741003Z         "impl": {
2026-06-22T01:34:20.2741102Z           "complete": true,
2026-06-22T01:34:20.2741199Z           "evidence": [
2026-06-22T01:34:20.2741270Z             {
2026-06-22T01:34:20.2741379Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:34:20.2741470Z               "line": 26
2026-06-22T01:34:20.2741552Z             },
2026-06-22T01:34:20.2741642Z             {
2026-06-22T01:34:20.2741742Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:34:20.2741834Z               "line": 135
2026-06-22T01:34:20.2741923Z             },
2026-06-22T01:34:20.2742009Z             {
2026-06-22T01:34:20.2742139Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:34:20.2742224Z               "line": 26
2026-06-22T01:34:20.2742314Z             },
2026-06-22T01:34:20.2742395Z             {
2026-06-22T01:34:20.2742529Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:34:20.2742624Z               "line": 237
2026-06-22T01:34:20.2742703Z             }
2026-06-22T01:34:20.2742790Z           ]
2026-06-22T01:34:20.2742865Z         },
2026-06-22T01:34:20.2742950Z         "int": {
2026-06-22T01:34:20.2743035Z           "complete": false,
2026-06-22T01:34:20.2743127Z           "evidence": []
2026-06-22T01:34:20.2743218Z         },
2026-06-22T01:34:20.2743302Z         "unit": {
2026-06-22T01:34:20.2743407Z           "complete": true,
2026-06-22T01:34:20.2743494Z           "evidence": [
2026-06-22T01:34:20.2743584Z             {
2026-06-22T01:34:20.2743688Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:34:20.2743780Z               "line": 161
2026-06-22T01:34:20.2743861Z             },
2026-06-22T01:34:20.2743946Z             {
2026-06-22T01:34:20.2744052Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:34:20.2744137Z               "line": 170
2026-06-22T01:34:20.2744213Z             },
2026-06-22T01:34:20.2744298Z             {
2026-06-22T01:34:20.2744400Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:34:20.2744495Z               "line": 179
2026-06-22T01:34:20.2744576Z             },
2026-06-22T01:34:20.2744662Z             {
2026-06-22T01:34:20.2744772Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:34:20.2744857Z               "line": 190
2026-06-22T01:34:20.2744938Z             },
2026-06-22T01:34:20.2745030Z             {
2026-06-22T01:34:20.2745138Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:34:20.2745224Z               "line": 199
2026-06-22T01:34:20.2745306Z             },
2026-06-22T01:34:20.2745382Z             {
2026-06-22T01:34:20.2745490Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:34:20.2745580Z               "line": 216
2026-06-22T01:34:20.2745667Z             },
2026-06-22T01:34:20.2745748Z             {
2026-06-22T01:34:20.2745862Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:34:20.2746054Z               "line": 242
2026-06-22T01:34:20.2746139Z             },
2026-06-22T01:34:20.2746302Z             {
2026-06-22T01:34:20.2746406Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.2746491Z               "line": 295
2026-06-22T01:34:20.2746591Z             },
2026-06-22T01:34:20.2746673Z             {
2026-06-22T01:34:20.2746783Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:34:20.2746873Z               "line": 244
2026-06-22T01:34:20.2746959Z             },
2026-06-22T01:34:20.2747050Z             {
2026-06-22T01:34:20.2747168Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:34:20.2747256Z               "line": 265
2026-06-22T01:34:20.2747341Z             },
2026-06-22T01:34:20.2747420Z             {
2026-06-22T01:34:20.2747541Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:34:20.2747623Z               "line": 293
2026-06-22T01:34:20.2747707Z             },
2026-06-22T01:34:20.2747792Z             {
2026-06-22T01:34:20.2747907Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:34:20.2747997Z               "line": 317
2026-06-22T01:34:20.2748076Z             },
2026-06-22T01:34:20.2748161Z             {
2026-06-22T01:34:20.2748282Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:34:20.2748372Z               "line": 327
2026-06-22T01:34:20.2748457Z             },
2026-06-22T01:34:20.2748539Z             {
2026-06-22T01:34:20.2748653Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.2748738Z               "line": 540
2026-06-22T01:34:20.2748819Z             }
2026-06-22T01:34:20.2748902Z           ]
2026-06-22T01:34:20.2749067Z         }
2026-06-22T01:34:20.2749149Z       }
2026-06-22T01:34:20.2749231Z     },
2026-06-22T01:34:20.2749316Z     {
2026-06-22T01:34:20.2749449Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-22T01:34:20.2754215Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-22T01:34:20.2754397Z       "requiredStages": [],
2026-06-22T01:34:20.2754482Z       "stages": {
2026-06-22T01:34:20.2754568Z         "doc": {
2026-06-22T01:34:20.2754655Z           "complete": false,
2026-06-22T01:34:20.2754740Z           "evidence": []
2026-06-22T01:34:20.2754830Z         },
2026-06-22T01:34:20.2754912Z         "impl": {
2026-06-22T01:34:20.2755007Z           "complete": false,
2026-06-22T01:34:20.2755217Z           "evidence": []
2026-06-22T01:34:20.2755304Z         },
2026-06-22T01:34:20.2755384Z         "int": {
2026-06-22T01:34:20.2755605Z           "complete": false,
2026-06-22T01:34:20.2755693Z           "evidence": []
2026-06-22T01:34:20.2755765Z         },
2026-06-22T01:34:20.2755847Z         "unit": {
2026-06-22T01:34:20.2755929Z           "complete": false,
2026-06-22T01:34:20.2756018Z           "evidence": []
2026-06-22T01:34:20.2756098Z         }
2026-06-22T01:34:20.2756188Z       }
2026-06-22T01:34:20.2756275Z     },
2026-06-22T01:34:20.2756356Z     {
2026-06-22T01:34:20.2756469Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-22T01:34:20.2758005Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-22T01:34:20.2758120Z       "requiredStages": [
2026-06-22T01:34:20.2758211Z         "impl",
2026-06-22T01:34:20.2758296Z         "unit",
2026-06-22T01:34:20.2758386Z         "int"
2026-06-22T01:34:20.2758467Z       ],
2026-06-22T01:34:20.2758552Z       "stages": {
2026-06-22T01:34:20.2758641Z         "doc": {
2026-06-22T01:34:20.2758731Z           "complete": false,
2026-06-22T01:34:20.2758817Z           "evidence": []
2026-06-22T01:34:20.2758900Z         },
2026-06-22T01:34:20.2759079Z         "impl": {
2026-06-22T01:34:20.2759166Z           "complete": true,
2026-06-22T01:34:20.2759261Z           "evidence": [
2026-06-22T01:34:20.2759341Z             {
2026-06-22T01:34:20.2759467Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2759562Z               "line": 538
2026-06-22T01:34:20.2759632Z             },
2026-06-22T01:34:20.2759724Z             {
2026-06-22T01:34:20.2759833Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2759914Z               "line": 641
2026-06-22T01:34:20.2759995Z             },
2026-06-22T01:34:20.2760077Z             {
2026-06-22T01:34:20.2760224Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T01:34:20.2760305Z               "line": 21
2026-06-22T01:34:20.2760392Z             }
2026-06-22T01:34:20.2760472Z           ]
2026-06-22T01:34:20.2760558Z         },
2026-06-22T01:34:20.2760644Z         "int": {
2026-06-22T01:34:20.2760726Z           "complete": true,
2026-06-22T01:34:20.2760811Z           "evidence": [
2026-06-22T01:34:20.2760896Z             {
2026-06-22T01:34:20.2761040Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T01:34:20.2761126Z               "line": 236
2026-06-22T01:34:20.2761215Z             },
2026-06-22T01:34:20.2761300Z             {
2026-06-22T01:34:20.2761438Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T01:34:20.2761532Z               "line": 396
2026-06-22T01:34:20.2761612Z             },
2026-06-22T01:34:20.2761694Z             {
2026-06-22T01:34:20.2761841Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.2761932Z               "line": 1526
2026-06-22T01:34:20.2762014Z             },
2026-06-22T01:34:20.2762100Z             {
2026-06-22T01:34:20.2762247Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.2762334Z               "line": 1678
2026-06-22T01:34:20.2762414Z             }
2026-06-22T01:34:20.2762499Z           ]
2026-06-22T01:34:20.2762581Z         },
2026-06-22T01:34:20.2762663Z         "unit": {
2026-06-22T01:34:20.2762747Z           "complete": true,
2026-06-22T01:34:20.2762833Z           "evidence": [
2026-06-22T01:34:20.2762910Z             {
2026-06-22T01:34:20.2763020Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2763220Z               "line": 887
2026-06-22T01:34:20.2763302Z             }
2026-06-22T01:34:20.2763472Z           ]
2026-06-22T01:34:20.2763545Z         }
2026-06-22T01:34:20.2763627Z       }
2026-06-22T01:34:20.2763715Z     },
2026-06-22T01:34:20.2763796Z     {
2026-06-22T01:34:20.2763910Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-22T01:34:20.2764060Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-22T01:34:20.2764155Z       "requiredStages": [
2026-06-22T01:34:20.2764237Z         "impl",
2026-06-22T01:34:20.2764329Z         "unit"
2026-06-22T01:34:20.2764418Z       ],
2026-06-22T01:34:20.2764499Z       "stages": {
2026-06-22T01:34:20.2764586Z         "doc": {
2026-06-22T01:34:20.2764676Z           "complete": false,
2026-06-22T01:34:20.2764761Z           "evidence": []
2026-06-22T01:34:20.2764843Z         },
2026-06-22T01:34:20.2764919Z         "impl": {
2026-06-22T01:34:20.2765005Z           "complete": true,
2026-06-22T01:34:20.2765090Z           "evidence": [
2026-06-22T01:34:20.2765177Z             {
2026-06-22T01:34:20.2765290Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:34:20.2765376Z               "line": 25
2026-06-22T01:34:20.2765457Z             },
2026-06-22T01:34:20.2765544Z             {
2026-06-22T01:34:20.2765649Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.2765744Z               "line": 26
2026-06-22T01:34:20.2765826Z             },
2026-06-22T01:34:20.2765906Z             {
2026-06-22T01:34:20.2766020Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.2766112Z               "line": 159
2026-06-22T01:34:20.2766197Z             }
2026-06-22T01:34:20.2766277Z           ]
2026-06-22T01:34:20.2766364Z         },
2026-06-22T01:34:20.2766455Z         "int": {
2026-06-22T01:34:20.2766545Z           "complete": false,
2026-06-22T01:34:20.2766630Z           "evidence": []
2026-06-22T01:34:20.2766710Z         },
2026-06-22T01:34:20.2766806Z         "unit": {
2026-06-22T01:34:20.2766893Z           "complete": true,
2026-06-22T01:34:20.2766982Z           "evidence": [
2026-06-22T01:34:20.2767073Z             {
2026-06-22T01:34:20.2767179Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:34:20.2767268Z               "line": 188
2026-06-22T01:34:20.2767353Z             },
2026-06-22T01:34:20.2767441Z             {
2026-06-22T01:34:20.2767545Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:34:20.2767640Z               "line": 240
2026-06-22T01:34:20.2767726Z             },
2026-06-22T01:34:20.2767807Z             {
2026-06-22T01:34:20.2767917Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.2767997Z               "line": 186
2026-06-22T01:34:20.2768080Z             }
2026-06-22T01:34:20.2768170Z           ]
2026-06-22T01:34:20.2768251Z         }
2026-06-22T01:34:20.2768332Z       }
2026-06-22T01:34:20.2768414Z     },
2026-06-22T01:34:20.2768494Z     {
2026-06-22T01:34:20.2768594Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-22T01:34:20.2768762Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-22T01:34:20.2768861Z       "requiredStages": [
2026-06-22T01:34:20.2769027Z         "impl",
2026-06-22T01:34:20.2769112Z         "unit"
2026-06-22T01:34:20.2769197Z       ],
2026-06-22T01:34:20.2769286Z       "stages": {
2026-06-22T01:34:20.2769368Z         "doc": {
2026-06-22T01:34:20.2769464Z           "complete": false,
2026-06-22T01:34:20.2769553Z           "evidence": []
2026-06-22T01:34:20.2769644Z         },
2026-06-22T01:34:20.2769736Z         "impl": {
2026-06-22T01:34:20.2769821Z           "complete": true,
2026-06-22T01:34:20.2769906Z           "evidence": [
2026-06-22T01:34:20.2769993Z             {
2026-06-22T01:34:20.2770102Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.2770188Z               "line": 48
2026-06-22T01:34:20.2770274Z             },
2026-06-22T01:34:20.2770365Z             {
2026-06-22T01:34:20.2770584Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.2770675Z               "line": 55
2026-06-22T01:34:20.2770850Z             },
2026-06-22T01:34:20.2770938Z             {
2026-06-22T01:34:20.2771051Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.2771137Z               "line": 74
2026-06-22T01:34:20.2771223Z             },
2026-06-22T01:34:20.2771300Z             {
2026-06-22T01:34:20.2771408Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.2771489Z               "line": 91
2026-06-22T01:34:20.2771572Z             }
2026-06-22T01:34:20.2771658Z           ]
2026-06-22T01:34:20.2771746Z         },
2026-06-22T01:34:20.2771832Z         "int": {
2026-06-22T01:34:20.2771918Z           "complete": false,
2026-06-22T01:34:20.2771998Z           "evidence": []
2026-06-22T01:34:20.2772082Z         },
2026-06-22T01:34:20.2772168Z         "unit": {
2026-06-22T01:34:20.2772254Z           "complete": true,
2026-06-22T01:34:20.2772360Z           "evidence": [
2026-06-22T01:34:20.2772444Z             {
2026-06-22T01:34:20.2772555Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.2772640Z               "line": 149
2026-06-22T01:34:20.2772721Z             },
2026-06-22T01:34:20.2772802Z             {
2026-06-22T01:34:20.2772913Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.2773013Z               "line": 166
2026-06-22T01:34:20.2773097Z             },
2026-06-22T01:34:20.2773180Z             {
2026-06-22T01:34:20.2773289Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.2773379Z               "line": 176
2026-06-22T01:34:20.2773460Z             },
2026-06-22T01:34:20.2773547Z             {
2026-06-22T01:34:20.2773655Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.2773747Z               "line": 194
2026-06-22T01:34:20.2773828Z             },
2026-06-22T01:34:20.2773914Z             {
2026-06-22T01:34:20.2774023Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.2774120Z               "line": 207
2026-06-22T01:34:20.2774205Z             }
2026-06-22T01:34:20.2774299Z           ]
2026-06-22T01:34:20.2774380Z         }
2026-06-22T01:34:20.2774465Z       }
2026-06-22T01:34:20.2774551Z     },
2026-06-22T01:34:20.2774635Z     {
2026-06-22T01:34:20.2774754Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-22T01:34:20.2774945Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-22T01:34:20.2775035Z       "requiredStages": [
2026-06-22T01:34:20.2775122Z         "impl",
2026-06-22T01:34:20.2775207Z         "unit"
2026-06-22T01:34:20.2775287Z       ],
2026-06-22T01:34:20.2775368Z       "stages": {
2026-06-22T01:34:20.2775456Z         "doc": {
2026-06-22T01:34:20.2775541Z           "complete": false,
2026-06-22T01:34:20.2775636Z           "evidence": []
2026-06-22T01:34:20.2775727Z         },
2026-06-22T01:34:20.2775808Z         "impl": {
2026-06-22T01:34:20.2775903Z           "complete": true,
2026-06-22T01:34:20.2775989Z           "evidence": [
2026-06-22T01:34:20.2776081Z             {
2026-06-22T01:34:20.2776204Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2776294Z               "line": 466
2026-06-22T01:34:20.2776386Z             },
2026-06-22T01:34:20.2776475Z             {
2026-06-22T01:34:20.2776594Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:34:20.2776686Z               "line": 26
2026-06-22T01:34:20.2776776Z             }
2026-06-22T01:34:20.2776856Z           ]
2026-06-22T01:34:20.2776943Z         },
2026-06-22T01:34:20.2777025Z         "int": {
2026-06-22T01:34:20.2777115Z           "complete": false,
2026-06-22T01:34:20.2777204Z           "evidence": []
2026-06-22T01:34:20.2777289Z         },
2026-06-22T01:34:20.2777371Z         "unit": {
2026-06-22T01:34:20.2777467Z           "complete": true,
2026-06-22T01:34:20.2777547Z           "evidence": [
2026-06-22T01:34:20.2777633Z             {
2026-06-22T01:34:20.2777833Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:34:20.2777928Z               "line": 150
2026-06-22T01:34:20.2778072Z             },
2026-06-22T01:34:20.2778157Z             {
2026-06-22T01:34:20.2778263Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:34:20.2778354Z               "line": 208
2026-06-22T01:34:20.2778439Z             }
2026-06-22T01:34:20.2778515Z           ]
2026-06-22T01:34:20.2778597Z         }
2026-06-22T01:34:20.2778682Z       }
2026-06-22T01:34:20.2778763Z     },
2026-06-22T01:34:20.2778849Z     {
2026-06-22T01:34:20.2779045Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-22T01:34:20.2788145Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T01:34:20.2788374Z       "requiredStages": [
2026-06-22T01:34:20.2788469Z         "impl",
2026-06-22T01:34:20.2788552Z         "unit",
2026-06-22T01:34:20.2788642Z         "int"
2026-06-22T01:34:20.2788731Z       ],
2026-06-22T01:34:20.2788818Z       "stages": {
2026-06-22T01:34:20.2789276Z         "doc": {
2026-06-22T01:34:20.2789366Z           "complete": false,
2026-06-22T01:34:20.2789567Z           "evidence": []
2026-06-22T01:34:20.2789657Z         },
2026-06-22T01:34:20.2789743Z         "impl": {
2026-06-22T01:34:20.2789840Z           "complete": true,
2026-06-22T01:34:20.2789924Z           "evidence": [
2026-06-22T01:34:20.2790009Z             {
2026-06-22T01:34:20.2790132Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.2790218Z               "line": 99
2026-06-22T01:34:20.2790302Z             },
2026-06-22T01:34:20.2790387Z             {
2026-06-22T01:34:20.2790507Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.2790594Z               "line": 201
2026-06-22T01:34:20.2790679Z             }
2026-06-22T01:34:20.2790760Z           ]
2026-06-22T01:34:20.2790837Z         },
2026-06-22T01:34:20.2790922Z         "int": {
2026-06-22T01:34:20.2791008Z           "complete": true,
2026-06-22T01:34:20.2791089Z           "evidence": [
2026-06-22T01:34:20.2791180Z             {
2026-06-22T01:34:20.2791336Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.2791433Z               "line": 737
2026-06-22T01:34:20.2791518Z             }
2026-06-22T01:34:20.2791609Z           ]
2026-06-22T01:34:20.2791685Z         },
2026-06-22T01:34:20.2791772Z         "unit": {
2026-06-22T01:34:20.2791866Z           "complete": true,
2026-06-22T01:34:20.2791942Z           "evidence": [
2026-06-22T01:34:20.2792029Z             {
2026-06-22T01:34:20.2792148Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.2792238Z               "line": 517
2026-06-22T01:34:20.2792319Z             },
2026-06-22T01:34:20.2792402Z             {
2026-06-22T01:34:20.2792509Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.2792606Z               "line": 576
2026-06-22T01:34:20.2792687Z             }
2026-06-22T01:34:20.2792778Z           ]
2026-06-22T01:34:20.2792862Z         }
2026-06-22T01:34:20.2792942Z       }
2026-06-22T01:34:20.2793034Z     },
2026-06-22T01:34:20.2793113Z     {
2026-06-22T01:34:20.2793240Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-22T01:34:20.2794537Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-22T01:34:20.2794644Z       "requiredStages": [
2026-06-22T01:34:20.2794738Z         "doc",
2026-06-22T01:34:20.2794824Z         "impl",
2026-06-22T01:34:20.2794910Z         "unit"
2026-06-22T01:34:20.2794992Z       ],
2026-06-22T01:34:20.2795081Z       "stages": {
2026-06-22T01:34:20.2795167Z         "doc": {
2026-06-22T01:34:20.2795250Z           "complete": true,
2026-06-22T01:34:20.2795359Z           "evidence": [
2026-06-22T01:34:20.2795447Z             {
2026-06-22T01:34:20.2795562Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2795643Z               "line": 214
2026-06-22T01:34:20.2795732Z             }
2026-06-22T01:34:20.2795821Z           ]
2026-06-22T01:34:20.2795908Z         },
2026-06-22T01:34:20.2795994Z         "impl": {
2026-06-22T01:34:20.2796089Z           "complete": true,
2026-06-22T01:34:20.2796184Z           "evidence": [
2026-06-22T01:34:20.2796271Z             {
2026-06-22T01:34:20.2796394Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2796480Z               "line": 56
2026-06-22T01:34:20.2796557Z             },
2026-06-22T01:34:20.2796638Z             {
2026-06-22T01:34:20.2796746Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.2796833Z               "line": 580
2026-06-22T01:34:20.2796915Z             },
2026-06-22T01:34:20.2796999Z             {
2026-06-22T01:34:20.2797215Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2797300Z               "line": 36
2026-06-22T01:34:20.2797438Z             },
2026-06-22T01:34:20.2797515Z             {
2026-06-22T01:34:20.2797638Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2797729Z               "line": 59
2026-06-22T01:34:20.2797802Z             },
2026-06-22T01:34:20.2797897Z             {
2026-06-22T01:34:20.2798006Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2798092Z               "line": 83
2026-06-22T01:34:20.2798179Z             },
2026-06-22T01:34:20.2798263Z             {
2026-06-22T01:34:20.2798386Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2798467Z               "line": 140
2026-06-22T01:34:20.2798554Z             },
2026-06-22T01:34:20.2798639Z             {
2026-06-22T01:34:20.2798748Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2798845Z               "line": 159
2026-06-22T01:34:20.2798930Z             },
2026-06-22T01:34:20.2799097Z             {
2026-06-22T01:34:20.2799226Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2799311Z               "line": 384
2026-06-22T01:34:20.2799392Z             },
2026-06-22T01:34:20.2799479Z             {
2026-06-22T01:34:20.2799588Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2799674Z               "line": 535
2026-06-22T01:34:20.2799761Z             },
2026-06-22T01:34:20.2799845Z             {
2026-06-22T01:34:20.2799955Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2800042Z               "line": 581
2026-06-22T01:34:20.2800123Z             },
2026-06-22T01:34:20.2800212Z             {
2026-06-22T01:34:20.2800331Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.2800424Z               "line": 300
2026-06-22T01:34:20.2800507Z             },
2026-06-22T01:34:20.2800602Z             {
2026-06-22T01:34:20.2800707Z               "path": "crates/spt/src/main.rs",
2026-06-22T01:34:20.2800797Z               "line": 42
2026-06-22T01:34:20.2800877Z             }
2026-06-22T01:34:20.2800952Z           ]
2026-06-22T01:34:20.2801049Z         },
2026-06-22T01:34:20.2801130Z         "int": {
2026-06-22T01:34:20.2801229Z           "complete": false,
2026-06-22T01:34:20.2801315Z           "evidence": []
2026-06-22T01:34:20.2801406Z         },
2026-06-22T01:34:20.2801492Z         "unit": {
2026-06-22T01:34:20.2801587Z           "complete": true,
2026-06-22T01:34:20.2801674Z           "evidence": [
2026-06-22T01:34:20.2801759Z             {
2026-06-22T01:34:20.2801873Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2801959Z               "line": 813
2026-06-22T01:34:20.2802045Z             },
2026-06-22T01:34:20.2802126Z             {
2026-06-22T01:34:20.2802250Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2802342Z               "line": 854
2026-06-22T01:34:20.2802421Z             },
2026-06-22T01:34:20.2802507Z             {
2026-06-22T01:34:20.2802623Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.2802708Z               "line": 928
2026-06-22T01:34:20.2802793Z             }
2026-06-22T01:34:20.2802879Z           ]
2026-06-22T01:34:20.2802962Z         }
2026-06-22T01:34:20.2803041Z       }
2026-06-22T01:34:20.2803132Z     },
2026-06-22T01:34:20.2803214Z     {
2026-06-22T01:34:20.2803352Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-22T01:34:20.2808270Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-22T01:34:20.2808633Z       "requiredStages": [
2026-06-22T01:34:20.2808715Z         "impl",
2026-06-22T01:34:20.2808805Z         "unit",
2026-06-22T01:34:20.2808889Z         "int"
2026-06-22T01:34:20.2809042Z       ],
2026-06-22T01:34:20.2809134Z       "stages": {
2026-06-22T01:34:20.2809217Z         "doc": {
2026-06-22T01:34:20.2809313Z           "complete": false,
2026-06-22T01:34:20.2809396Z           "evidence": []
2026-06-22T01:34:20.2809477Z         },
2026-06-22T01:34:20.2809566Z         "impl": {
2026-06-22T01:34:20.2809653Z           "complete": true,
2026-06-22T01:34:20.2809734Z           "evidence": [
2026-06-22T01:34:20.2809820Z             {
2026-06-22T01:34:20.2809943Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.2810053Z               "line": 204
2026-06-22T01:34:20.2810144Z             }
2026-06-22T01:34:20.2810234Z           ]
2026-06-22T01:34:20.2810315Z         },
2026-06-22T01:34:20.2810396Z         "int": {
2026-06-22T01:34:20.2810487Z           "complete": true,
2026-06-22T01:34:20.2810577Z           "evidence": [
2026-06-22T01:34:20.2810659Z             {
2026-06-22T01:34:20.2810786Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T01:34:20.2810878Z               "line": 296
2026-06-22T01:34:20.2810960Z             }
2026-06-22T01:34:20.2811049Z           ]
2026-06-22T01:34:20.2811129Z         },
2026-06-22T01:34:20.2811214Z         "unit": {
2026-06-22T01:34:20.2811296Z           "complete": true,
2026-06-22T01:34:20.2811390Z           "evidence": [
2026-06-22T01:34:20.2811470Z             {
2026-06-22T01:34:20.2811589Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.2811676Z               "line": 467
2026-06-22T01:34:20.2811756Z             }
2026-06-22T01:34:20.2811841Z           ]
2026-06-22T01:34:20.2811923Z         }
2026-06-22T01:34:20.2812014Z       }
2026-06-22T01:34:20.2812099Z     },
2026-06-22T01:34:20.2812185Z     {
2026-06-22T01:34:20.2812286Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-22T01:34:20.2815625Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-22T01:34:20.2815949Z       "requiredStages": [
2026-06-22T01:34:20.2816035Z         "impl",
2026-06-22T01:34:20.2816126Z         "unit",
2026-06-22T01:34:20.2816201Z         "int"
2026-06-22T01:34:20.2816293Z       ],
2026-06-22T01:34:20.2816384Z       "stages": {
2026-06-22T01:34:20.2816474Z         "doc": {
2026-06-22T01:34:20.2816573Z           "complete": false,
2026-06-22T01:34:20.2816668Z           "evidence": []
2026-06-22T01:34:20.2816758Z         },
2026-06-22T01:34:20.2816847Z         "impl": {
2026-06-22T01:34:20.2816941Z           "complete": true,
2026-06-22T01:34:20.2817048Z           "evidence": [
2026-06-22T01:34:20.2817134Z             {
2026-06-22T01:34:20.2819946Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.2820074Z               "line": 123
2026-06-22T01:34:20.2820164Z             },
2026-06-22T01:34:20.2820246Z             {
2026-06-22T01:34:20.2820361Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:34:20.2820455Z               "line": 134
2026-06-22T01:34:20.2820542Z             }
2026-06-22T01:34:20.2820628Z           ]
2026-06-22T01:34:20.2820709Z         },
2026-06-22T01:34:20.2820794Z         "int": {
2026-06-22T01:34:20.2820885Z           "complete": true,
2026-06-22T01:34:20.2820975Z           "evidence": [
2026-06-22T01:34:20.2821056Z             {
2026-06-22T01:34:20.2821186Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:34:20.2821272Z               "line": 312
2026-06-22T01:34:20.2821351Z             },
2026-06-22T01:34:20.2821433Z             {
2026-06-22T01:34:20.2821567Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:34:20.2821656Z               "line": 525
2026-06-22T01:34:20.2821737Z             }
2026-06-22T01:34:20.2821823Z           ]
2026-06-22T01:34:20.2821894Z         },
2026-06-22T01:34:20.2821978Z         "unit": {
2026-06-22T01:34:20.2822078Z           "complete": true,
2026-06-22T01:34:20.2822169Z           "evidence": [
2026-06-22T01:34:20.2822251Z             {
2026-06-22T01:34:20.2822383Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.2822469Z               "line": 250
2026-06-22T01:34:20.2822550Z             }
2026-06-22T01:34:20.2822631Z           ]
2026-06-22T01:34:20.2822717Z         }
2026-06-22T01:34:20.2822804Z       }
2026-06-22T01:34:20.2822889Z     },
2026-06-22T01:34:20.2822974Z     {
2026-06-22T01:34:20.2823099Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-22T01:34:20.2824888Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-22T01:34:20.2824988Z       "requiredStages": [
2026-06-22T01:34:20.2825079Z         "impl",
2026-06-22T01:34:20.2825165Z         "unit"
2026-06-22T01:34:20.2825255Z       ],
2026-06-22T01:34:20.2825341Z       "stages": {
2026-06-22T01:34:20.2825418Z         "doc": {
2026-06-22T01:34:20.2825507Z           "complete": false,
2026-06-22T01:34:20.2825593Z           "evidence": []
2026-06-22T01:34:20.2825680Z         },
2026-06-22T01:34:20.2825765Z         "impl": {
2026-06-22T01:34:20.2826038Z           "complete": true,
2026-06-22T01:34:20.2826123Z           "evidence": [
2026-06-22T01:34:20.2826213Z             {
2026-06-22T01:34:20.2826451Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2826543Z               "line": 31
2026-06-22T01:34:20.2826629Z             }
2026-06-22T01:34:20.2826710Z           ]
2026-06-22T01:34:20.2826790Z         },
2026-06-22T01:34:20.2826876Z         "int": {
2026-06-22T01:34:20.2826973Z           "complete": false,
2026-06-22T01:34:20.2827062Z           "evidence": []
2026-06-22T01:34:20.2827147Z         },
2026-06-22T01:34:20.2827242Z         "unit": {
2026-06-22T01:34:20.2827328Z           "complete": true,
2026-06-22T01:34:20.2827426Z           "evidence": [
2026-06-22T01:34:20.2827511Z             {
2026-06-22T01:34:20.2827622Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2827708Z               "line": 181
2026-06-22T01:34:20.2827793Z             }
2026-06-22T01:34:20.2827879Z           ]
2026-06-22T01:34:20.2827965Z         }
2026-06-22T01:34:20.2828051Z       }
2026-06-22T01:34:20.2828136Z     },
2026-06-22T01:34:20.2828223Z     {
2026-06-22T01:34:20.2828351Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-22T01:34:20.2828509Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-22T01:34:20.2828609Z       "requiredStages": [
2026-06-22T01:34:20.2828689Z         "impl",
2026-06-22T01:34:20.2828771Z         "unit"
2026-06-22T01:34:20.2828852Z       ],
2026-06-22T01:34:20.2829033Z       "stages": {
2026-06-22T01:34:20.2829109Z         "doc": {
2026-06-22T01:34:20.2829196Z           "complete": false,
2026-06-22T01:34:20.2829285Z           "evidence": []
2026-06-22T01:34:20.2829367Z         },
2026-06-22T01:34:20.2829463Z         "impl": {
2026-06-22T01:34:20.2829549Z           "complete": true,
2026-06-22T01:34:20.2829633Z           "evidence": [
2026-06-22T01:34:20.2829720Z             {
2026-06-22T01:34:20.2829836Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2829920Z               "line": 49
2026-06-22T01:34:20.2830005Z             },
2026-06-22T01:34:20.2830095Z             {
2026-06-22T01:34:20.2830215Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2830291Z               "line": 81
2026-06-22T01:34:20.2830376Z             }
2026-06-22T01:34:20.2830463Z           ]
2026-06-22T01:34:20.2830544Z         },
2026-06-22T01:34:20.2830625Z         "int": {
2026-06-22T01:34:20.2830705Z           "complete": false,
2026-06-22T01:34:20.2830792Z           "evidence": []
2026-06-22T01:34:20.2830883Z         },
2026-06-22T01:34:20.2830968Z         "unit": {
2026-06-22T01:34:20.2831049Z           "complete": true,
2026-06-22T01:34:20.2831135Z           "evidence": [
2026-06-22T01:34:20.2831221Z             {
2026-06-22T01:34:20.2831344Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2831427Z               "line": 156
2026-06-22T01:34:20.2831512Z             },
2026-06-22T01:34:20.2831607Z             {
2026-06-22T01:34:20.2831717Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2831803Z               "line": 173
2026-06-22T01:34:20.2831892Z             },
2026-06-22T01:34:20.2831978Z             {
2026-06-22T01:34:20.2832104Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2832193Z               "line": 196
2026-06-22T01:34:20.2832283Z             }
2026-06-22T01:34:20.2832359Z           ]
2026-06-22T01:34:20.2832445Z         }
2026-06-22T01:34:20.2832529Z       }
2026-06-22T01:34:20.2832614Z     },
2026-06-22T01:34:20.2832700Z     {
2026-06-22T01:34:20.2832816Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-22T01:34:20.2832986Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-22T01:34:20.2833083Z       "requiredStages": [
2026-06-22T01:34:20.2833177Z         "impl",
2026-06-22T01:34:20.2833267Z         "unit"
2026-06-22T01:34:20.2833349Z       ],
2026-06-22T01:34:20.2833435Z       "stages": {
2026-06-22T01:34:20.2833615Z         "doc": {
2026-06-22T01:34:20.2833702Z           "complete": false,
2026-06-22T01:34:20.2833882Z           "evidence": []
2026-06-22T01:34:20.2833974Z         },
2026-06-22T01:34:20.2834055Z         "impl": {
2026-06-22T01:34:20.2834145Z           "complete": true,
2026-06-22T01:34:20.2834230Z           "evidence": [
2026-06-22T01:34:20.2834313Z             {
2026-06-22T01:34:20.2834435Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2834521Z               "line": 120
2026-06-22T01:34:20.2834609Z             }
2026-06-22T01:34:20.2834680Z           ]
2026-06-22T01:34:20.2834773Z         },
2026-06-22T01:34:20.2834860Z         "int": {
2026-06-22T01:34:20.2834947Z           "complete": false,
2026-06-22T01:34:20.2835047Z           "evidence": []
2026-06-22T01:34:20.2835121Z         },
2026-06-22T01:34:20.2835206Z         "unit": {
2026-06-22T01:34:20.2835302Z           "complete": true,
2026-06-22T01:34:20.2835382Z           "evidence": [
2026-06-22T01:34:20.2835481Z             {
2026-06-22T01:34:20.2835596Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2835697Z               "line": 212
2026-06-22T01:34:20.2835776Z             },
2026-06-22T01:34:20.2835857Z             {
2026-06-22T01:34:20.2835973Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2836068Z               "line": 221
2026-06-22T01:34:20.2836158Z             },
2026-06-22T01:34:20.2836240Z             {
2026-06-22T01:34:20.2836360Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2836444Z               "line": 229
2026-06-22T01:34:20.2836536Z             },
2026-06-22T01:34:20.2836617Z             {
2026-06-22T01:34:20.2836730Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2836816Z               "line": 239
2026-06-22T01:34:20.2836899Z             },
2026-06-22T01:34:20.2836988Z             {
2026-06-22T01:34:20.2837093Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:34:20.2837189Z               "line": 249
2026-06-22T01:34:20.2837265Z             }
2026-06-22T01:34:20.2837360Z           ]
2026-06-22T01:34:20.2837437Z         }
2026-06-22T01:34:20.2837519Z       }
2026-06-22T01:34:20.2837608Z     },
2026-06-22T01:34:20.2837693Z     {
2026-06-22T01:34:20.2837793Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-22T01:34:20.2837948Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-22T01:34:20.2838038Z       "requiredStages": [
2026-06-22T01:34:20.2838124Z         "impl",
2026-06-22T01:34:20.2838211Z         "unit"
2026-06-22T01:34:20.2838301Z       ],
2026-06-22T01:34:20.2838377Z       "stages": {
2026-06-22T01:34:20.2838468Z         "doc": {
2026-06-22T01:34:20.2838563Z           "complete": false,
2026-06-22T01:34:20.2838663Z           "evidence": []
2026-06-22T01:34:20.2838744Z         },
2026-06-22T01:34:20.2838826Z         "impl": {
2026-06-22T01:34:20.2838921Z           "complete": true,
2026-06-22T01:34:20.2839093Z           "evidence": [
2026-06-22T01:34:20.2839169Z             {
2026-06-22T01:34:20.2839283Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.2839364Z               "line": 14
2026-06-22T01:34:20.2839447Z             },
2026-06-22T01:34:20.2839526Z             {
2026-06-22T01:34:20.2839636Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.2839718Z               "line": 63
2026-06-22T01:34:20.2839799Z             }
2026-06-22T01:34:20.2839883Z           ]
2026-06-22T01:34:20.2839970Z         },
2026-06-22T01:34:20.2840052Z         "int": {
2026-06-22T01:34:20.2840137Z           "complete": false,
2026-06-22T01:34:20.2840232Z           "evidence": []
2026-06-22T01:34:20.2840313Z         },
2026-06-22T01:34:20.2840400Z         "unit": {
2026-06-22T01:34:20.2840489Z           "complete": true,
2026-06-22T01:34:20.2840575Z           "evidence": [
2026-06-22T01:34:20.2840650Z             {
2026-06-22T01:34:20.2840756Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.2840945Z               "line": 164
2026-06-22T01:34:20.2841032Z             },
2026-06-22T01:34:20.2841208Z             {
2026-06-22T01:34:20.2841313Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.2841400Z               "line": 198
2026-06-22T01:34:20.2841481Z             },
2026-06-22T01:34:20.2841566Z             {
2026-06-22T01:34:20.2841677Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.2841762Z               "line": 220
2026-06-22T01:34:20.2841847Z             }
2026-06-22T01:34:20.2841928Z           ]
2026-06-22T01:34:20.2842015Z         }
2026-06-22T01:34:20.2842095Z       }
2026-06-22T01:34:20.2842167Z     },
2026-06-22T01:34:20.2842243Z     {
2026-06-22T01:34:20.2842349Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-22T01:34:20.2843685Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-22T01:34:20.2843798Z       "requiredStages": [],
2026-06-22T01:34:20.2843880Z       "stages": {
2026-06-22T01:34:20.2843967Z         "doc": {
2026-06-22T01:34:20.2844052Z           "complete": true,
2026-06-22T01:34:20.2844137Z           "evidence": [
2026-06-22T01:34:20.2844220Z             {
2026-06-22T01:34:20.2844324Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2844410Z               "line": 165
2026-06-22T01:34:20.2844491Z             }
2026-06-22T01:34:20.2844577Z           ]
2026-06-22T01:34:20.2844658Z         },
2026-06-22T01:34:20.2844743Z         "impl": {
2026-06-22T01:34:20.2844839Z           "complete": false,
2026-06-22T01:34:20.2844921Z           "evidence": []
2026-06-22T01:34:20.2845000Z         },
2026-06-22T01:34:20.2845105Z         "int": {
2026-06-22T01:34:20.2845202Z           "complete": false,
2026-06-22T01:34:20.2845301Z           "evidence": []
2026-06-22T01:34:20.2845382Z         },
2026-06-22T01:34:20.2845469Z         "unit": {
2026-06-22T01:34:20.2845555Z           "complete": false,
2026-06-22T01:34:20.2845639Z           "evidence": []
2026-06-22T01:34:20.2845710Z         }
2026-06-22T01:34:20.2845796Z       }
2026-06-22T01:34:20.2845882Z     },
2026-06-22T01:34:20.2845961Z     {
2026-06-22T01:34:20.2846079Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-22T01:34:20.2846290Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-22T01:34:20.2846384Z       "requiredStages": [
2026-06-22T01:34:20.2846471Z         "impl",
2026-06-22T01:34:20.2846557Z         "unit"
2026-06-22T01:34:20.2846642Z       ],
2026-06-22T01:34:20.2846728Z       "stages": {
2026-06-22T01:34:20.2846810Z         "doc": {
2026-06-22T01:34:20.2846905Z           "complete": false,
2026-06-22T01:34:20.2846999Z           "evidence": []
2026-06-22T01:34:20.2847081Z         },
2026-06-22T01:34:20.2847168Z         "impl": {
2026-06-22T01:34:20.2847253Z           "complete": true,
2026-06-22T01:34:20.2847343Z           "evidence": [
2026-06-22T01:34:20.2847425Z             {
2026-06-22T01:34:20.2847548Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2847634Z               "line": 76
2026-06-22T01:34:20.2847711Z             },
2026-06-22T01:34:20.2847788Z             {
2026-06-22T01:34:20.2847896Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2847982Z               "line": 167
2026-06-22T01:34:20.2848064Z             },
2026-06-22T01:34:20.2848150Z             {
2026-06-22T01:34:20.2848258Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2848343Z               "line": 233
2026-06-22T01:34:20.2848420Z             },
2026-06-22T01:34:20.2848509Z             {
2026-06-22T01:34:20.2848613Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2848780Z               "line": 272
2026-06-22T01:34:20.2849014Z             }
2026-06-22T01:34:20.2849090Z           ]
2026-06-22T01:34:20.2849176Z         },
2026-06-22T01:34:20.2849261Z         "int": {
2026-06-22T01:34:20.2849348Z           "complete": false,
2026-06-22T01:34:20.2849438Z           "evidence": []
2026-06-22T01:34:20.2849523Z         },
2026-06-22T01:34:20.2849609Z         "unit": {
2026-06-22T01:34:20.2849706Z           "complete": true,
2026-06-22T01:34:20.2849791Z           "evidence": [
2026-06-22T01:34:20.2849866Z             {
2026-06-22T01:34:20.2849973Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2850063Z               "line": 321
2026-06-22T01:34:20.2850144Z             },
2026-06-22T01:34:20.2850230Z             {
2026-06-22T01:34:20.2850336Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2850420Z               "line": 329
2026-06-22T01:34:20.2850501Z             },
2026-06-22T01:34:20.2850593Z             {
2026-06-22T01:34:20.2850711Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2850811Z               "line": 356
2026-06-22T01:34:20.2850893Z             },
2026-06-22T01:34:20.2850975Z             {
2026-06-22T01:34:20.2851082Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2851181Z               "line": 395
2026-06-22T01:34:20.2851263Z             },
2026-06-22T01:34:20.2851340Z             {
2026-06-22T01:34:20.2851449Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2851535Z               "line": 406
2026-06-22T01:34:20.2851621Z             },
2026-06-22T01:34:20.2851707Z             {
2026-06-22T01:34:20.2851821Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2851908Z               "line": 418
2026-06-22T01:34:20.2851993Z             },
2026-06-22T01:34:20.2852074Z             {
2026-06-22T01:34:20.2852179Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:34:20.2852279Z               "line": 442
2026-06-22T01:34:20.2852355Z             }
2026-06-22T01:34:20.2852445Z           ]
2026-06-22T01:34:20.2852518Z         }
2026-06-22T01:34:20.2852599Z       }
2026-06-22T01:34:20.2852684Z     },
2026-06-22T01:34:20.2852765Z     {
2026-06-22T01:34:20.2852871Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-22T01:34:20.2853013Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-22T01:34:20.2853113Z       "requiredStages": [
2026-06-22T01:34:20.2853196Z         "impl",
2026-06-22T01:34:20.2853281Z         "int"
2026-06-22T01:34:20.2853365Z       ],
2026-06-22T01:34:20.2853460Z       "stages": {
2026-06-22T01:34:20.2853579Z         "doc": {
2026-06-22T01:34:20.2853687Z           "complete": false,
2026-06-22T01:34:20.2853782Z           "evidence": []
2026-06-22T01:34:20.2853854Z         },
2026-06-22T01:34:20.2853945Z         "impl": {
2026-06-22T01:34:20.2854044Z           "complete": true,
2026-06-22T01:34:20.2854135Z           "evidence": [
2026-06-22T01:34:20.2854217Z             {
2026-06-22T01:34:20.2854335Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2854431Z               "line": 22
2026-06-22T01:34:20.2854508Z             }
2026-06-22T01:34:20.2854598Z           ]
2026-06-22T01:34:20.2854692Z         },
2026-06-22T01:34:20.2854770Z         "int": {
2026-06-22T01:34:20.2854860Z           "complete": true,
2026-06-22T01:34:20.2854979Z           "evidence": [
2026-06-22T01:34:20.2855065Z             {
2026-06-22T01:34:20.2855194Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-22T01:34:20.2855289Z               "line": 18
2026-06-22T01:34:20.2855355Z             }
2026-06-22T01:34:20.2855443Z           ]
2026-06-22T01:34:20.2855523Z         },
2026-06-22T01:34:20.2855604Z         "unit": {
2026-06-22T01:34:20.2855695Z           "complete": false,
2026-06-22T01:34:20.2855786Z           "evidence": []
2026-06-22T01:34:20.2855885Z         }
2026-06-22T01:34:20.2856077Z       }
2026-06-22T01:34:20.2856162Z     },
2026-06-22T01:34:20.2856251Z     {
2026-06-22T01:34:20.2856370Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-22T01:34:20.2856659Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-22T01:34:20.2856745Z       "requiredStages": [
2026-06-22T01:34:20.2856831Z         "impl",
2026-06-22T01:34:20.2856916Z         "unit"
2026-06-22T01:34:20.2856997Z       ],
2026-06-22T01:34:20.2857070Z       "stages": {
2026-06-22T01:34:20.2857156Z         "doc": {
2026-06-22T01:34:20.2857245Z           "complete": false,
2026-06-22T01:34:20.2857337Z           "evidence": []
2026-06-22T01:34:20.2857422Z         },
2026-06-22T01:34:20.2857517Z         "impl": {
2026-06-22T01:34:20.2857603Z           "complete": true,
2026-06-22T01:34:20.2857699Z           "evidence": [
2026-06-22T01:34:20.2857779Z             {
2026-06-22T01:34:20.2857908Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2857990Z               "line": 465
2026-06-22T01:34:20.2858076Z             },
2026-06-22T01:34:20.2858166Z             {
2026-06-22T01:34:20.2858281Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:34:20.2858372Z               "line": 27
2026-06-22T01:34:20.2858485Z             }
2026-06-22T01:34:20.2858571Z           ]
2026-06-22T01:34:20.2858653Z         },
2026-06-22T01:34:20.2858743Z         "int": {
2026-06-22T01:34:20.2858832Z           "complete": false,
2026-06-22T01:34:20.2858918Z           "evidence": []
2026-06-22T01:34:20.2859079Z         },
2026-06-22T01:34:20.2859158Z         "unit": {
2026-06-22T01:34:20.2859245Z           "complete": true,
2026-06-22T01:34:20.2859326Z           "evidence": [
2026-06-22T01:34:20.2859412Z             {
2026-06-22T01:34:20.2859540Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.2859627Z               "line": 990
2026-06-22T01:34:20.2859703Z             },
2026-06-22T01:34:20.2859792Z             {
2026-06-22T01:34:20.2859903Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:34:20.2859989Z               "line": 181
2026-06-22T01:34:20.2860074Z             }
2026-06-22T01:34:20.2860160Z           ]
2026-06-22T01:34:20.2860242Z         }
2026-06-22T01:34:20.2860322Z       }
2026-06-22T01:34:20.2860403Z     },
2026-06-22T01:34:20.2860489Z     {
2026-06-22T01:34:20.2860600Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-22T01:34:20.2860765Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-22T01:34:20.2860862Z       "requiredStages": [
2026-06-22T01:34:20.2860952Z         "impl",
2026-06-22T01:34:20.2861028Z         "unit"
2026-06-22T01:34:20.2861114Z       ],
2026-06-22T01:34:20.2861206Z       "stages": {
2026-06-22T01:34:20.2861286Z         "doc": {
2026-06-22T01:34:20.2861376Z           "complete": false,
2026-06-22T01:34:20.2861468Z           "evidence": []
2026-06-22T01:34:20.2861554Z         },
2026-06-22T01:34:20.2861642Z         "impl": {
2026-06-22T01:34:20.2861728Z           "complete": true,
2026-06-22T01:34:20.2861828Z           "evidence": [
2026-06-22T01:34:20.2861910Z             {
2026-06-22T01:34:20.2862038Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2862119Z               "line": 73
2026-06-22T01:34:20.2862200Z             },
2026-06-22T01:34:20.2862286Z             {
2026-06-22T01:34:20.2862404Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2862501Z               "line": 972
2026-06-22T01:34:20.2862577Z             },
2026-06-22T01:34:20.2862662Z             {
2026-06-22T01:34:20.2862782Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:34:20.2862863Z               "line": 20
2026-06-22T01:34:20.2862953Z             },
2026-06-22T01:34:20.2863039Z             {
2026-06-22T01:34:20.2863145Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:34:20.2863235Z               "line": 100
2026-06-22T01:34:20.2863316Z             },
2026-06-22T01:34:20.2863407Z             {
2026-06-22T01:34:20.2863625Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2863717Z               "line": 619
2026-06-22T01:34:20.2863878Z             },
2026-06-22T01:34:20.2863963Z             {
2026-06-22T01:34:20.2864083Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:34:20.2864167Z               "line": 68
2026-06-22T01:34:20.2864252Z             },
2026-06-22T01:34:20.2864337Z             {
2026-06-22T01:34:20.2864448Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:34:20.2864538Z               "line": 80
2026-06-22T01:34:20.2864623Z             }
2026-06-22T01:34:20.2864710Z           ]
2026-06-22T01:34:20.2864791Z         },
2026-06-22T01:34:20.2864881Z         "int": {
2026-06-22T01:34:20.2864966Z           "complete": true,
2026-06-22T01:34:20.2865054Z           "evidence": [
2026-06-22T01:34:20.2865139Z             {
2026-06-22T01:34:20.2865248Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T01:34:20.2865345Z               "line": 44
2026-06-22T01:34:20.2865425Z             }
2026-06-22T01:34:20.2865510Z           ]
2026-06-22T01:34:20.2865586Z         },
2026-06-22T01:34:20.2865679Z         "unit": {
2026-06-22T01:34:20.2865763Z           "complete": true,
2026-06-22T01:34:20.2865849Z           "evidence": [
2026-06-22T01:34:20.2865935Z             {
2026-06-22T01:34:20.2866059Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2866140Z               "line": 1181
2026-06-22T01:34:20.2866221Z             },
2026-06-22T01:34:20.2866308Z             {
2026-06-22T01:34:20.2866426Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.2866522Z               "line": 1197
2026-06-22T01:34:20.2866603Z             },
2026-06-22T01:34:20.2866694Z             {
2026-06-22T01:34:20.2866821Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2866916Z               "line": 2706
2026-06-22T01:34:20.2867002Z             },
2026-06-22T01:34:20.2867095Z             {
2026-06-22T01:34:20.2867214Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:34:20.2867320Z               "line": 152
2026-06-22T01:34:20.2867401Z             },
2026-06-22T01:34:20.2867476Z             {
2026-06-22T01:34:20.2867592Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:34:20.2867687Z               "line": 175
2026-06-22T01:34:20.2867767Z             },
2026-06-22T01:34:20.2867853Z             {
2026-06-22T01:34:20.2867973Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:34:20.2868063Z               "line": 186
2026-06-22T01:34:20.2868143Z             },
2026-06-22T01:34:20.2868226Z             {
2026-06-22T01:34:20.2868340Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:34:20.2868421Z               "line": 202
2026-06-22T01:34:20.2868507Z             },
2026-06-22T01:34:20.2868588Z             {
2026-06-22T01:34:20.2868701Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:34:20.2868802Z               "line": 216
2026-06-22T01:34:20.2868884Z             },
2026-06-22T01:34:20.2869035Z             {
2026-06-22T01:34:20.2869151Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:34:20.2869237Z               "line": 137
2026-06-22T01:34:20.2869322Z             },
2026-06-22T01:34:20.2869407Z             {
2026-06-22T01:34:20.2869521Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2869611Z               "line": 8152
2026-06-22T01:34:20.2869690Z             },
2026-06-22T01:34:20.2869771Z             {
2026-06-22T01:34:20.2869877Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T01:34:20.2869977Z               "line": 30
2026-06-22T01:34:20.2870057Z             },
2026-06-22T01:34:20.2870144Z             {
2026-06-22T01:34:20.2870253Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T01:34:20.2870343Z               "line": 73
2026-06-22T01:34:20.2870429Z             }
2026-06-22T01:34:20.2870621Z           ]
2026-06-22T01:34:20.2870705Z         }
2026-06-22T01:34:20.2870788Z       }
2026-06-22T01:34:20.2870959Z     },
2026-06-22T01:34:20.2871040Z     {
2026-06-22T01:34:20.2871169Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-22T01:34:20.2875141Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-22T01:34:20.2875289Z       "requiredStages": [
2026-06-22T01:34:20.2875375Z         "impl",
2026-06-22T01:34:20.2875460Z         "unit",
2026-06-22T01:34:20.2875546Z         "int"
2026-06-22T01:34:20.2875633Z       ],
2026-06-22T01:34:20.2875723Z       "stages": {
2026-06-22T01:34:20.2875803Z         "doc": {
2026-06-22T01:34:20.2875900Z           "complete": false,
2026-06-22T01:34:20.2876019Z           "evidence": []
2026-06-22T01:34:20.2876104Z         },
2026-06-22T01:34:20.2876195Z         "impl": {
2026-06-22T01:34:20.2876309Z           "complete": true,
2026-06-22T01:34:20.2876404Z           "evidence": [
2026-06-22T01:34:20.2876490Z             {
2026-06-22T01:34:20.2876619Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2876714Z               "line": 510
2026-06-22T01:34:20.2876791Z             },
2026-06-22T01:34:20.2876873Z             {
2026-06-22T01:34:20.2876995Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2877087Z               "line": 704
2026-06-22T01:34:20.2877173Z             }
2026-06-22T01:34:20.2877254Z           ]
2026-06-22T01:34:20.2877339Z         },
2026-06-22T01:34:20.2877423Z         "int": {
2026-06-22T01:34:20.2877524Z           "complete": true,
2026-06-22T01:34:20.2877608Z           "evidence": [
2026-06-22T01:34:20.2877694Z             {
2026-06-22T01:34:20.2877798Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2877894Z               "line": 1119
2026-06-22T01:34:20.2877984Z             },
2026-06-22T01:34:20.2878064Z             {
2026-06-22T01:34:20.2878190Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T01:34:20.2878276Z               "line": 312
2026-06-22T01:34:20.2878365Z             }
2026-06-22T01:34:20.2878447Z           ]
2026-06-22T01:34:20.2878533Z         },
2026-06-22T01:34:20.2878614Z         "unit": {
2026-06-22T01:34:20.2878708Z           "complete": true,
2026-06-22T01:34:20.2878786Z           "evidence": [
2026-06-22T01:34:20.2878871Z             {
2026-06-22T01:34:20.2879057Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2879148Z               "line": 821
2026-06-22T01:34:20.2879234Z             }
2026-06-22T01:34:20.2879315Z           ]
2026-06-22T01:34:20.2879396Z         }
2026-06-22T01:34:20.2879482Z       }
2026-06-22T01:34:20.2879567Z     },
2026-06-22T01:34:20.2879658Z     {
2026-06-22T01:34:20.2879877Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-22T01:34:20.2880124Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-22T01:34:20.2880341Z       "requiredStages": [
2026-06-22T01:34:20.2880422Z         "impl",
2026-06-22T01:34:20.2880500Z         "unit"
2026-06-22T01:34:20.2880575Z       ],
2026-06-22T01:34:20.2880656Z       "stages": {
2026-06-22T01:34:20.2880742Z         "doc": {
2026-06-22T01:34:20.2880838Z           "complete": true,
2026-06-22T01:34:20.2880932Z           "evidence": [
2026-06-22T01:34:20.2881014Z             {
2026-06-22T01:34:20.2881128Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2881214Z               "line": 133
2026-06-22T01:34:20.2881300Z             }
2026-06-22T01:34:20.2881386Z           ]
2026-06-22T01:34:20.2881471Z         },
2026-06-22T01:34:20.2881557Z         "impl": {
2026-06-22T01:34:20.2881648Z           "complete": true,
2026-06-22T01:34:20.2881753Z           "evidence": [
2026-06-22T01:34:20.2881844Z             {
2026-06-22T01:34:20.2881943Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.2882040Z               "line": 65
2026-06-22T01:34:20.2882124Z             },
2026-06-22T01:34:20.2882215Z             {
2026-06-22T01:34:20.2882331Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:34:20.2882420Z               "line": 17
2026-06-22T01:34:20.2882511Z             },
2026-06-22T01:34:20.2882603Z             {
2026-06-22T01:34:20.2882712Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2882800Z               "line": 146
2026-06-22T01:34:20.2882881Z             },
2026-06-22T01:34:20.2882982Z             {
2026-06-22T01:34:20.2883092Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2883177Z               "line": 310
2026-06-22T01:34:20.2883268Z             },
2026-06-22T01:34:20.2883349Z             {
2026-06-22T01:34:20.2883467Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.2883564Z               "line": 441
2026-06-22T01:34:20.2883641Z             },
2026-06-22T01:34:20.2883741Z             {
2026-06-22T01:34:20.2883845Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.2883931Z               "line": 32
2026-06-22T01:34:20.2884002Z             },
2026-06-22T01:34:20.2884093Z             {
2026-06-22T01:34:20.2884208Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2884299Z               "line": 1283
2026-06-22T01:34:20.2884384Z             },
2026-06-22T01:34:20.2884469Z             {
2026-06-22T01:34:20.2884575Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2884669Z               "line": 6161
2026-06-22T01:34:20.2884755Z             },
2026-06-22T01:34:20.2884837Z             {
2026-06-22T01:34:20.2884942Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2885041Z               "line": 6443
2026-06-22T01:34:20.2885121Z             }
2026-06-22T01:34:20.2885207Z           ]
2026-06-22T01:34:20.2885292Z         },
2026-06-22T01:34:20.2885382Z         "int": {
2026-06-22T01:34:20.2885472Z           "complete": false,
2026-06-22T01:34:20.2885554Z           "evidence": []
2026-06-22T01:34:20.2885649Z         },
2026-06-22T01:34:20.2885729Z         "unit": {
2026-06-22T01:34:20.2885825Z           "complete": true,
2026-06-22T01:34:20.2885902Z           "evidence": [
2026-06-22T01:34:20.2885992Z             {
2026-06-22T01:34:20.2886101Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:34:20.2886184Z               "line": 94
2026-06-22T01:34:20.2886269Z             },
2026-06-22T01:34:20.2886354Z             {
2026-06-22T01:34:20.2886470Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:34:20.2886569Z               "line": 111
2026-06-22T01:34:20.2886645Z             },
2026-06-22T01:34:20.2886735Z             {
2026-06-22T01:34:20.2886842Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:34:20.2886941Z               "line": 124
2026-06-22T01:34:20.2887104Z             },
2026-06-22T01:34:20.2887194Z             {
2026-06-22T01:34:20.2887303Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:34:20.2887462Z               "line": 134
2026-06-22T01:34:20.2887546Z             },
2026-06-22T01:34:20.2887623Z             {
2026-06-22T01:34:20.2887733Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:34:20.2887823Z               "line": 144
2026-06-22T01:34:20.2887908Z             },
2026-06-22T01:34:20.2887993Z             {
2026-06-22T01:34:20.2888103Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:34:20.2888206Z               "line": 156
2026-06-22T01:34:20.2888291Z             },
2026-06-22T01:34:20.2888377Z             {
2026-06-22T01:34:20.2888507Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.2888606Z               "line": 746
2026-06-22T01:34:20.2891293Z             },
2026-06-22T01:34:20.2891407Z             {
2026-06-22T01:34:20.2891559Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.2891650Z               "line": 309
2026-06-22T01:34:20.2891741Z             }
2026-06-22T01:34:20.2891825Z           ]
2026-06-22T01:34:20.2891909Z         }
2026-06-22T01:34:20.2891989Z       }
2026-06-22T01:34:20.2892070Z     },
2026-06-22T01:34:20.2892155Z     {
2026-06-22T01:34:20.2892261Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-22T01:34:20.2892404Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-22T01:34:20.2892499Z       "requiredStages": [
2026-06-22T01:34:20.2892585Z         "impl",
2026-06-22T01:34:20.2892675Z         "unit"
2026-06-22T01:34:20.2892761Z       ],
2026-06-22T01:34:20.2892848Z       "stages": {
2026-06-22T01:34:20.2892929Z         "doc": {
2026-06-22T01:34:20.2893027Z           "complete": false,
2026-06-22T01:34:20.2893114Z           "evidence": []
2026-06-22T01:34:20.2893192Z         },
2026-06-22T01:34:20.2893281Z         "impl": {
2026-06-22T01:34:20.2893361Z           "complete": true,
2026-06-22T01:34:20.2893460Z           "evidence": [
2026-06-22T01:34:20.2893542Z             {
2026-06-22T01:34:20.2893676Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.2893751Z               "line": 128
2026-06-22T01:34:20.2893838Z             }
2026-06-22T01:34:20.2893924Z           ]
2026-06-22T01:34:20.2894004Z         },
2026-06-22T01:34:20.2894095Z         "int": {
2026-06-22T01:34:20.2894186Z           "complete": false,
2026-06-22T01:34:20.2894282Z           "evidence": []
2026-06-22T01:34:20.2894366Z         },
2026-06-22T01:34:20.2894453Z         "unit": {
2026-06-22T01:34:20.2894544Z           "complete": true,
2026-06-22T01:34:20.2894625Z           "evidence": [
2026-06-22T01:34:20.2894710Z             {
2026-06-22T01:34:20.2894826Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.2894910Z               "line": 205
2026-06-22T01:34:20.2894986Z             }
2026-06-22T01:34:20.2895068Z           ]
2026-06-22T01:34:20.2895159Z         }
2026-06-22T01:34:20.2895244Z       }
2026-06-22T01:34:20.2895329Z     },
2026-06-22T01:34:20.2895412Z     {
2026-06-22T01:34:20.2895540Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-22T01:34:20.2895691Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-22T01:34:20.2895791Z       "requiredStages": [
2026-06-22T01:34:20.2895880Z         "impl",
2026-06-22T01:34:20.2895966Z         "unit"
2026-06-22T01:34:20.2896052Z       ],
2026-06-22T01:34:20.2896138Z       "stages": {
2026-06-22T01:34:20.2896228Z         "doc": {
2026-06-22T01:34:20.2896327Z           "complete": false,
2026-06-22T01:34:20.2896419Z           "evidence": []
2026-06-22T01:34:20.2896500Z         },
2026-06-22T01:34:20.2896585Z         "impl": {
2026-06-22T01:34:20.2896681Z           "complete": true,
2026-06-22T01:34:20.2896767Z           "evidence": [
2026-06-22T01:34:20.2896848Z             {
2026-06-22T01:34:20.2896967Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2897191Z               "line": 367
2026-06-22T01:34:20.2897282Z             },
2026-06-22T01:34:20.2897363Z             {
2026-06-22T01:34:20.2897567Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2897650Z               "line": 378
2026-06-22T01:34:20.2897735Z             },
2026-06-22T01:34:20.2897820Z             {
2026-06-22T01:34:20.2897930Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2898022Z               "line": 396
2026-06-22T01:34:20.2898101Z             }
2026-06-22T01:34:20.2898183Z           ]
2026-06-22T01:34:20.2898265Z         },
2026-06-22T01:34:20.2898351Z         "int": {
2026-06-22T01:34:20.2898439Z           "complete": false,
2026-06-22T01:34:20.2898530Z           "evidence": []
2026-06-22T01:34:20.2898620Z         },
2026-06-22T01:34:20.2898706Z         "unit": {
2026-06-22T01:34:20.2898790Z           "complete": true,
2026-06-22T01:34:20.2898875Z           "evidence": [
2026-06-22T01:34:20.2899048Z             {
2026-06-22T01:34:20.2899166Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2899257Z               "line": 420
2026-06-22T01:34:20.2899339Z             },
2026-06-22T01:34:20.2899419Z             {
2026-06-22T01:34:20.2899533Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2899611Z               "line": 441
2026-06-22T01:34:20.2899686Z             },
2026-06-22T01:34:20.2899776Z             {
2026-06-22T01:34:20.2899877Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2899959Z               "line": 811
2026-06-22T01:34:20.2900044Z             },
2026-06-22T01:34:20.2900130Z             {
2026-06-22T01:34:20.2900241Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2900330Z               "line": 822
2026-06-22T01:34:20.2900411Z             },
2026-06-22T01:34:20.2900502Z             {
2026-06-22T01:34:20.2900612Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2900697Z               "line": 835
2026-06-22T01:34:20.2900783Z             }
2026-06-22T01:34:20.2900855Z           ]
2026-06-22T01:34:20.2900931Z         }
2026-06-22T01:34:20.2901021Z       }
2026-06-22T01:34:20.2901110Z     },
2026-06-22T01:34:20.2901192Z     {
2026-06-22T01:34:20.2901314Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-22T01:34:20.2908796Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-22T01:34:20.2909238Z       "requiredStages": [
2026-06-22T01:34:20.2909317Z         "impl",
2026-06-22T01:34:20.2909402Z         "unit",
2026-06-22T01:34:20.2909484Z         "int"
2026-06-22T01:34:20.2909565Z       ],
2026-06-22T01:34:20.2909646Z       "stages": {
2026-06-22T01:34:20.2909760Z         "doc": {
2026-06-22T01:34:20.2909847Z           "complete": false,
2026-06-22T01:34:20.2909927Z           "evidence": []
2026-06-22T01:34:20.2910036Z         },
2026-06-22T01:34:20.2910123Z         "impl": {
2026-06-22T01:34:20.2910213Z           "complete": true,
2026-06-22T01:34:20.2910304Z           "evidence": [
2026-06-22T01:34:20.2910384Z             {
2026-06-22T01:34:20.2910510Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2910594Z               "line": 376
2026-06-22T01:34:20.2910675Z             },
2026-06-22T01:34:20.2910752Z             {
2026-06-22T01:34:20.2910871Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2910962Z               "line": 852
2026-06-22T01:34:20.2911047Z             },
2026-06-22T01:34:20.2911134Z             {
2026-06-22T01:34:20.2911247Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2911338Z               "line": 1127
2026-06-22T01:34:20.2911415Z             }
2026-06-22T01:34:20.2911506Z           ]
2026-06-22T01:34:20.2911576Z         },
2026-06-22T01:34:20.2911652Z         "int": {
2026-06-22T01:34:20.2911747Z           "complete": true,
2026-06-22T01:34:20.2911832Z           "evidence": [
2026-06-22T01:34:20.2911921Z             {
2026-06-22T01:34:20.2912074Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.2912161Z               "line": 256
2026-06-22T01:34:20.2912241Z             },
2026-06-22T01:34:20.2912326Z             {
2026-06-22T01:34:20.2912466Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.2912546Z               "line": 382
2026-06-22T01:34:20.2912622Z             }
2026-06-22T01:34:20.2912709Z           ]
2026-06-22T01:34:20.2912789Z         },
2026-06-22T01:34:20.2912875Z         "unit": {
2026-06-22T01:34:20.2912960Z           "complete": true,
2026-06-22T01:34:20.2913043Z           "evidence": [
2026-06-22T01:34:20.2913128Z             {
2026-06-22T01:34:20.2913247Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2913328Z               "line": 2833
2026-06-22T01:34:20.2913409Z             }
2026-06-22T01:34:20.2913495Z           ]
2026-06-22T01:34:20.2913581Z         }
2026-06-22T01:34:20.2913663Z       }
2026-06-22T01:34:20.2913752Z     },
2026-06-22T01:34:20.2913833Z     {
2026-06-22T01:34:20.2913963Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-22T01:34:20.2921327Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-22T01:34:20.2921728Z       "requiredStages": [
2026-06-22T01:34:20.2921817Z         "doc",
2026-06-22T01:34:20.2921903Z         "impl",
2026-06-22T01:34:20.2922009Z         "unit",
2026-06-22T01:34:20.2922094Z         "int"
2026-06-22T01:34:20.2922174Z       ],
2026-06-22T01:34:20.2922284Z       "stages": {
2026-06-22T01:34:20.2922374Z         "doc": {
2026-06-22T01:34:20.2922462Z           "complete": true,
2026-06-22T01:34:20.2922548Z           "evidence": [
2026-06-22T01:34:20.2922629Z             {
2026-06-22T01:34:20.2922745Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.2922839Z               "line": 454
2026-06-22T01:34:20.2922920Z             }
2026-06-22T01:34:20.2923002Z           ]
2026-06-22T01:34:20.2923088Z         },
2026-06-22T01:34:20.2923177Z         "impl": {
2026-06-22T01:34:20.2923259Z           "complete": true,
2026-06-22T01:34:20.2923345Z           "evidence": [
2026-06-22T01:34:20.2923430Z             {
2026-06-22T01:34:20.2923550Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.2923641Z               "line": 355
2026-06-22T01:34:20.2923716Z             },
2026-06-22T01:34:20.2923797Z             {
2026-06-22T01:34:20.2923918Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.2924003Z               "line": 493
2026-06-22T01:34:20.2924088Z             },
2026-06-22T01:34:20.2924169Z             {
2026-06-22T01:34:20.2924289Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.2924369Z               "line": 1941
2026-06-22T01:34:20.2924456Z             },
2026-06-22T01:34:20.2924538Z             {
2026-06-22T01:34:20.2924651Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2924732Z               "line": 347
2026-06-22T01:34:20.2924819Z             }
2026-06-22T01:34:20.2924905Z           ]
2026-06-22T01:34:20.2924984Z         },
2026-06-22T01:34:20.2925075Z         "int": {
2026-06-22T01:34:20.2925156Z           "complete": true,
2026-06-22T01:34:20.2925237Z           "evidence": [
2026-06-22T01:34:20.2925327Z             {
2026-06-22T01:34:20.2925441Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:34:20.2925619Z               "line": 737
2026-06-22T01:34:20.2925704Z             },
2026-06-22T01:34:20.2925790Z             {
2026-06-22T01:34:20.2925981Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:34:20.2926075Z               "line": 854
2026-06-22T01:34:20.2926158Z             },
2026-06-22T01:34:20.2926238Z             {
2026-06-22T01:34:20.2926390Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.2926473Z               "line": 544
2026-06-22T01:34:20.2926562Z             },
2026-06-22T01:34:20.2926643Z             {
2026-06-22T01:34:20.2926788Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.2926877Z               "line": 1830
2026-06-22T01:34:20.2926962Z             },
2026-06-22T01:34:20.2927049Z             {
2026-06-22T01:34:20.2927187Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-22T01:34:20.2927286Z               "line": 266
2026-06-22T01:34:20.2927381Z             }
2026-06-22T01:34:20.2927462Z           ]
2026-06-22T01:34:20.2927551Z         },
2026-06-22T01:34:20.2927641Z         "unit": {
2026-06-22T01:34:20.2927737Z           "complete": true,
2026-06-22T01:34:20.2927819Z           "evidence": [
2026-06-22T01:34:20.2927904Z             {
2026-06-22T01:34:20.2928008Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2928099Z               "line": 1046
2026-06-22T01:34:20.2928180Z             },
2026-06-22T01:34:20.2928270Z             {
2026-06-22T01:34:20.2928386Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.2928476Z               "line": 1080
2026-06-22T01:34:20.2928561Z             }
2026-06-22T01:34:20.2928647Z           ]
2026-06-22T01:34:20.2928729Z         }
2026-06-22T01:34:20.2928819Z       }
2026-06-22T01:34:20.2928891Z     },
2026-06-22T01:34:20.2929049Z     {
2026-06-22T01:34:20.2929157Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-22T01:34:20.2929726Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-22T01:34:20.2929834Z       "requiredStages": [
2026-06-22T01:34:20.2929921Z         "impl",
2026-06-22T01:34:20.2930007Z         "unit"
2026-06-22T01:34:20.2930092Z       ],
2026-06-22T01:34:20.2930172Z       "stages": {
2026-06-22T01:34:20.2930258Z         "doc": {
2026-06-22T01:34:20.2930343Z           "complete": false,
2026-06-22T01:34:20.2930428Z           "evidence": []
2026-06-22T01:34:20.2930508Z         },
2026-06-22T01:34:20.2930594Z         "impl": {
2026-06-22T01:34:20.2930681Z           "complete": true,
2026-06-22T01:34:20.2930771Z           "evidence": [
2026-06-22T01:34:20.2930851Z             {
2026-06-22T01:34:20.2930981Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2931062Z               "line": 759
2026-06-22T01:34:20.2931147Z             }
2026-06-22T01:34:20.2931228Z           ]
2026-06-22T01:34:20.2931310Z         },
2026-06-22T01:34:20.2931396Z         "int": {
2026-06-22T01:34:20.2931485Z           "complete": false,
2026-06-22T01:34:20.2931572Z           "evidence": []
2026-06-22T01:34:20.2931658Z         },
2026-06-22T01:34:20.2931744Z         "unit": {
2026-06-22T01:34:20.2931839Z           "complete": true,
2026-06-22T01:34:20.2931921Z           "evidence": [
2026-06-22T01:34:20.2932011Z             {
2026-06-22T01:34:20.2932124Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.2932212Z               "line": 873
2026-06-22T01:34:20.2932298Z             }
2026-06-22T01:34:20.2932377Z           ]
2026-06-22T01:34:20.2932463Z         }
2026-06-22T01:34:20.2932546Z       }
2026-06-22T01:34:20.2932627Z     },
2026-06-22T01:34:20.2932696Z     {
2026-06-22T01:34:20.2932829Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-22T01:34:20.2935197Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-22T01:34:20.2935489Z       "requiredStages": [
2026-06-22T01:34:20.2935577Z         "impl",
2026-06-22T01:34:20.2935658Z         "unit",
2026-06-22T01:34:20.2935730Z         "int"
2026-06-22T01:34:20.2935812Z       ],
2026-06-22T01:34:20.2935921Z       "stages": {
2026-06-22T01:34:20.2936006Z         "doc": {
2026-06-22T01:34:20.2936098Z           "complete": false,
2026-06-22T01:34:20.2936202Z           "evidence": []
2026-06-22T01:34:20.2936292Z         },
2026-06-22T01:34:20.2936379Z         "impl": {
2026-06-22T01:34:20.2936469Z           "complete": true,
2026-06-22T01:34:20.2936559Z           "evidence": [
2026-06-22T01:34:20.2936645Z             {
2026-06-22T01:34:20.2936770Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2936855Z               "line": 705
2026-06-22T01:34:20.2936941Z             }
2026-06-22T01:34:20.2937023Z           ]
2026-06-22T01:34:20.2937104Z         },
2026-06-22T01:34:20.2937189Z         "int": {
2026-06-22T01:34:20.2937289Z           "complete": true,
2026-06-22T01:34:20.2937372Z           "evidence": [
2026-06-22T01:34:20.2937456Z             {
2026-06-22T01:34:20.2937594Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-22T01:34:20.2937682Z               "line": 24
2026-06-22T01:34:20.2937770Z             }
2026-06-22T01:34:20.2937856Z           ]
2026-06-22T01:34:20.2937936Z         },
2026-06-22T01:34:20.2938032Z         "unit": {
2026-06-22T01:34:20.2938116Z           "complete": true,
2026-06-22T01:34:20.2938206Z           "evidence": [
2026-06-22T01:34:20.2938292Z             {
2026-06-22T01:34:20.2938412Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2938497Z               "line": 918
2026-06-22T01:34:20.2938583Z             }
2026-06-22T01:34:20.2938669Z           ]
2026-06-22T01:34:20.2938755Z         }
2026-06-22T01:34:20.2938845Z       }
2026-06-22T01:34:20.2938931Z     },
2026-06-22T01:34:20.2939102Z     {
2026-06-22T01:34:20.2939212Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-22T01:34:20.2942814Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-22T01:34:20.2943053Z       "requiredStages": [
2026-06-22T01:34:20.2943149Z         "impl",
2026-06-22T01:34:20.2943233Z         "unit",
2026-06-22T01:34:20.2943428Z         "int"
2026-06-22T01:34:20.2943508Z       ],
2026-06-22T01:34:20.2943597Z       "stages": {
2026-06-22T01:34:20.2943678Z         "doc": {
2026-06-22T01:34:20.2943778Z           "complete": false,
2026-06-22T01:34:20.2943861Z           "evidence": []
2026-06-22T01:34:20.2943944Z         },
2026-06-22T01:34:20.2944031Z         "impl": {
2026-06-22T01:34:20.2944118Z           "complete": true,
2026-06-22T01:34:20.2944208Z           "evidence": [
2026-06-22T01:34:20.2944293Z             {
2026-06-22T01:34:20.2944413Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2944498Z               "line": 391
2026-06-22T01:34:20.2944584Z             },
2026-06-22T01:34:20.2944670Z             {
2026-06-22T01:34:20.2944775Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2944866Z               "line": 343
2026-06-22T01:34:20.2944956Z             },
2026-06-22T01:34:20.2945038Z             {
2026-06-22T01:34:20.2945146Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2945246Z               "line": 1750
2026-06-22T01:34:20.2945334Z             },
2026-06-22T01:34:20.2945424Z             {
2026-06-22T01:34:20.2945528Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2945619Z               "line": 3191
2026-06-22T01:34:20.2945696Z             }
2026-06-22T01:34:20.2945781Z           ]
2026-06-22T01:34:20.2945862Z         },
2026-06-22T01:34:20.2945954Z         "int": {
2026-06-22T01:34:20.2946045Z           "complete": true,
2026-06-22T01:34:20.2946142Z           "evidence": [
2026-06-22T01:34:20.2946228Z             {
2026-06-22T01:34:20.2946362Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T01:34:20.2946453Z               "line": 353
2026-06-22T01:34:20.2946538Z             },
2026-06-22T01:34:20.2946629Z             {
2026-06-22T01:34:20.2946768Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-22T01:34:20.2946857Z               "line": 23
2026-06-22T01:34:20.2946944Z             }
2026-06-22T01:34:20.2947029Z           ]
2026-06-22T01:34:20.2947120Z         },
2026-06-22T01:34:20.2947205Z         "unit": {
2026-06-22T01:34:20.2947297Z           "complete": true,
2026-06-22T01:34:20.2947391Z           "evidence": [
2026-06-22T01:34:20.2947477Z             {
2026-06-22T01:34:20.2947597Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.2947678Z               "line": 743
2026-06-22T01:34:20.2947768Z             },
2026-06-22T01:34:20.2947849Z             {
2026-06-22T01:34:20.2947946Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.2948030Z               "line": 7863
2026-06-22T01:34:20.2948121Z             }
2026-06-22T01:34:20.2948213Z           ]
2026-06-22T01:34:20.2948289Z         }
2026-06-22T01:34:20.2948373Z       }
2026-06-22T01:34:20.2948458Z     },
2026-06-22T01:34:20.2948544Z     {
2026-06-22T01:34:20.2948662Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-22T01:34:20.2952048Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-22T01:34:20.2952402Z       "requiredStages": [
2026-06-22T01:34:20.2952483Z         "impl",
2026-06-22T01:34:20.2952568Z         "unit",
2026-06-22T01:34:20.2952654Z         "int"
2026-06-22T01:34:20.2952736Z       ],
2026-06-22T01:34:20.2952835Z       "stages": {
2026-06-22T01:34:20.2952921Z         "doc": {
2026-06-22T01:34:20.2953007Z           "complete": false,
2026-06-22T01:34:20.2953103Z           "evidence": []
2026-06-22T01:34:20.2953178Z         },
2026-06-22T01:34:20.2953264Z         "impl": {
2026-06-22T01:34:20.2953361Z           "complete": true,
2026-06-22T01:34:20.2953450Z           "evidence": [
2026-06-22T01:34:20.2953531Z             {
2026-06-22T01:34:20.2953647Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2953751Z               "line": 64
2026-06-22T01:34:20.2953836Z             },
2026-06-22T01:34:20.2953921Z             {
2026-06-22T01:34:20.2954035Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2954120Z               "line": 78
2026-06-22T01:34:20.2954209Z             },
2026-06-22T01:34:20.2954281Z             {
2026-06-22T01:34:20.2954401Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2954486Z               "line": 170
2026-06-22T01:34:20.2954572Z             },
2026-06-22T01:34:20.2954659Z             {
2026-06-22T01:34:20.2954782Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2954867Z               "line": 185
2026-06-22T01:34:20.2954950Z             },
2026-06-22T01:34:20.2955040Z             {
2026-06-22T01:34:20.2955149Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2955235Z               "line": 195
2026-06-22T01:34:20.2955317Z             },
2026-06-22T01:34:20.2955401Z             {
2026-06-22T01:34:20.2955526Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2955617Z               "line": 205
2026-06-22T01:34:20.2955702Z             },
2026-06-22T01:34:20.2955783Z             {
2026-06-22T01:34:20.2955908Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2955998Z               "line": 294
2026-06-22T01:34:20.2956074Z             },
2026-06-22T01:34:20.2956160Z             {
2026-06-22T01:34:20.2956280Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2956369Z               "line": 308
2026-06-22T01:34:20.2956446Z             },
2026-06-22T01:34:20.2956543Z             {
2026-06-22T01:34:20.2956661Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2956750Z               "line": 377
2026-06-22T01:34:20.2956845Z             },
2026-06-22T01:34:20.2956927Z             {
2026-06-22T01:34:20.2957041Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2957136Z               "line": 437
2026-06-22T01:34:20.2957223Z             },
2026-06-22T01:34:20.2957314Z             {
2026-06-22T01:34:20.2957432Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2957519Z               "line": 455
2026-06-22T01:34:20.2957608Z             }
2026-06-22T01:34:20.2957694Z           ]
2026-06-22T01:34:20.2957775Z         },
2026-06-22T01:34:20.2957862Z         "int": {
2026-06-22T01:34:20.2957961Z           "complete": true,
2026-06-22T01:34:20.2958042Z           "evidence": [
2026-06-22T01:34:20.2958119Z             {
2026-06-22T01:34:20.2958247Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T01:34:20.2958338Z               "line": 45
2026-06-22T01:34:20.2958419Z             },
2026-06-22T01:34:20.2958506Z             {
2026-06-22T01:34:20.2958633Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T01:34:20.2958724Z               "line": 354
2026-06-22T01:34:20.2958900Z             },
2026-06-22T01:34:20.2959071Z             {
2026-06-22T01:34:20.2959218Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T01:34:20.2959441Z               "line": 31
2026-06-22T01:34:20.2959533Z             }
2026-06-22T01:34:20.2959612Z           ]
2026-06-22T01:34:20.2959693Z         },
2026-06-22T01:34:20.2959785Z         "unit": {
2026-06-22T01:34:20.2959875Z           "complete": true,
2026-06-22T01:34:20.2959975Z           "evidence": [
2026-06-22T01:34:20.2960056Z             {
2026-06-22T01:34:20.2960185Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.2960280Z               "line": 727
2026-06-22T01:34:20.2960352Z             }
2026-06-22T01:34:20.2960438Z           ]
2026-06-22T01:34:20.2960524Z         }
2026-06-22T01:34:20.2960604Z       }
2026-06-22T01:34:20.2960686Z     },
2026-06-22T01:34:20.2960762Z     {
2026-06-22T01:34:20.2960876Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-22T01:34:20.2961091Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-22T01:34:20.2961181Z       "requiredStages": [
2026-06-22T01:34:20.2961262Z         "impl",
2026-06-22T01:34:20.2961344Z         "unit"
2026-06-22T01:34:20.2961429Z       ],
2026-06-22T01:34:20.2961510Z       "stages": {
2026-06-22T01:34:20.2961592Z         "doc": {
2026-06-22T01:34:20.2961679Z           "complete": false,
2026-06-22T01:34:20.2961763Z           "evidence": []
2026-06-22T01:34:20.2961848Z         },
2026-06-22T01:34:20.2961938Z         "impl": {
2026-06-22T01:34:20.2962020Z           "complete": true,
2026-06-22T01:34:20.2962117Z           "evidence": [
2026-06-22T01:34:20.2962203Z             {
2026-06-22T01:34:20.2962303Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:34:20.2962390Z               "line": 14
2026-06-22T01:34:20.2962475Z             },
2026-06-22T01:34:20.2962555Z             {
2026-06-22T01:34:20.2962661Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.2962757Z               "line": 566
2026-06-22T01:34:20.2962847Z             }
2026-06-22T01:34:20.2962928Z           ]
2026-06-22T01:34:20.2963014Z         },
2026-06-22T01:34:20.2963095Z         "int": {
2026-06-22T01:34:20.2963194Z           "complete": false,
2026-06-22T01:34:20.2963277Z           "evidence": []
2026-06-22T01:34:20.2963362Z         },
2026-06-22T01:34:20.2963457Z         "unit": {
2026-06-22T01:34:20.2963543Z           "complete": true,
2026-06-22T01:34:20.2963648Z           "evidence": [
2026-06-22T01:34:20.2963724Z             {
2026-06-22T01:34:20.2963833Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:34:20.2963921Z               "line": 130
2026-06-22T01:34:20.2964001Z             },
2026-06-22T01:34:20.2964091Z             {
2026-06-22T01:34:20.2964197Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:34:20.2964283Z               "line": 138
2026-06-22T01:34:20.2964363Z             },
2026-06-22T01:34:20.2964443Z             {
2026-06-22T01:34:20.2964543Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:34:20.2964633Z               "line": 146
2026-06-22T01:34:20.2964722Z             },
2026-06-22T01:34:20.2964807Z             {
2026-06-22T01:34:20.2964913Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:34:20.2964999Z               "line": 154
2026-06-22T01:34:20.2965079Z             },
2026-06-22T01:34:20.2965165Z             {
2026-06-22T01:34:20.2965276Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:34:20.2965370Z               "line": 162
2026-06-22T01:34:20.2965447Z             },
2026-06-22T01:34:20.2965533Z             {
2026-06-22T01:34:20.2965638Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:34:20.2965723Z               "line": 170
2026-06-22T01:34:20.2965800Z             }
2026-06-22T01:34:20.2965886Z           ]
2026-06-22T01:34:20.2965981Z         }
2026-06-22T01:34:20.2966061Z       }
2026-06-22T01:34:20.2966154Z     },
2026-06-22T01:34:20.2966343Z     {
2026-06-22T01:34:20.2966449Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-22T01:34:20.2967334Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-22T01:34:20.2967506Z       "requiredStages": [
2026-06-22T01:34:20.2967597Z         "impl",
2026-06-22T01:34:20.2967682Z         "unit"
2026-06-22T01:34:20.2967763Z       ],
2026-06-22T01:34:20.2967849Z       "stages": {
2026-06-22T01:34:20.2967930Z         "doc": {
2026-06-22T01:34:20.2968025Z           "complete": false,
2026-06-22T01:34:20.2968103Z           "evidence": []
2026-06-22T01:34:20.2968183Z         },
2026-06-22T01:34:20.2968268Z         "impl": {
2026-06-22T01:34:20.2968364Z           "complete": true,
2026-06-22T01:34:20.2968441Z           "evidence": [
2026-06-22T01:34:20.2968526Z             {
2026-06-22T01:34:20.2968694Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:34:20.2968799Z               "line": 34
2026-06-22T01:34:20.2968884Z             }
2026-06-22T01:34:20.2969032Z           ]
2026-06-22T01:34:20.2969118Z         },
2026-06-22T01:34:20.2969203Z         "int": {
2026-06-22T01:34:20.2969299Z           "complete": false,
2026-06-22T01:34:20.2969395Z           "evidence": []
2026-06-22T01:34:20.2969475Z         },
2026-06-22T01:34:20.2969565Z         "unit": {
2026-06-22T01:34:20.2969655Z           "complete": true,
2026-06-22T01:34:20.2969750Z           "evidence": [
2026-06-22T01:34:20.2969829Z             {
2026-06-22T01:34:20.2969963Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:34:20.2970054Z               "line": 188
2026-06-22T01:34:20.2970135Z             },
2026-06-22T01:34:20.2970220Z             {
2026-06-22T01:34:20.2970355Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:34:20.2970450Z               "line": 200
2026-06-22T01:34:20.2970530Z             },
2026-06-22T01:34:20.2970612Z             {
2026-06-22T01:34:20.2970760Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:34:20.2970840Z               "line": 211
2026-06-22T01:34:20.2970927Z             },
2026-06-22T01:34:20.2971008Z             {
2026-06-22T01:34:20.2971145Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:34:20.2971236Z               "line": 253
2026-06-22T01:34:20.2971323Z             },
2026-06-22T01:34:20.2971403Z             {
2026-06-22T01:34:20.2971522Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:34:20.2971619Z               "line": 277
2026-06-22T01:34:20.2971703Z             },
2026-06-22T01:34:20.2971789Z             {
2026-06-22T01:34:20.2971919Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:34:20.2972004Z               "line": 300
2026-06-22T01:34:20.2972099Z             },
2026-06-22T01:34:20.2972181Z             {
2026-06-22T01:34:20.2972314Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:34:20.2972398Z               "line": 316
2026-06-22T01:34:20.2972488Z             }
2026-06-22T01:34:20.2972565Z           ]
2026-06-22T01:34:20.2972650Z         }
2026-06-22T01:34:20.2972735Z       }
2026-06-22T01:34:20.2972815Z     },
2026-06-22T01:34:20.2972902Z     {
2026-06-22T01:34:20.2973007Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-22T01:34:20.2973537Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-22T01:34:20.2973632Z       "requiredStages": [
2026-06-22T01:34:20.2973712Z         "impl",
2026-06-22T01:34:20.2973803Z         "unit"
2026-06-22T01:34:20.2973880Z       ],
2026-06-22T01:34:20.2973970Z       "stages": {
2026-06-22T01:34:20.2974166Z         "doc": {
2026-06-22T01:34:20.2974260Z           "complete": false,
2026-06-22T01:34:20.2974346Z           "evidence": []
2026-06-22T01:34:20.2974533Z         },
2026-06-22T01:34:20.2974627Z         "impl": {
2026-06-22T01:34:20.2974713Z           "complete": true,
2026-06-22T01:34:20.2974806Z           "evidence": [
2026-06-22T01:34:20.2974895Z             {
2026-06-22T01:34:20.2975012Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2975093Z               "line": 29
2026-06-22T01:34:20.2975179Z             },
2026-06-22T01:34:20.2975263Z             {
2026-06-22T01:34:20.2975363Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2975459Z               "line": 174
2026-06-22T01:34:20.2975545Z             },
2026-06-22T01:34:20.2975635Z             {
2026-06-22T01:34:20.2975750Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2975841Z               "line": 194
2026-06-22T01:34:20.2975926Z             },
2026-06-22T01:34:20.2976007Z             {
2026-06-22T01:34:20.2976117Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2976222Z               "line": 222
2026-06-22T01:34:20.2976307Z             }
2026-06-22T01:34:20.2976399Z           ]
2026-06-22T01:34:20.2976484Z         },
2026-06-22T01:34:20.2976570Z         "int": {
2026-06-22T01:34:20.2976665Z           "complete": false,
2026-06-22T01:34:20.2976761Z           "evidence": []
2026-06-22T01:34:20.2976842Z         },
2026-06-22T01:34:20.2976932Z         "unit": {
2026-06-22T01:34:20.2977029Z           "complete": true,
2026-06-22T01:34:20.2977118Z           "evidence": [
2026-06-22T01:34:20.2977194Z             {
2026-06-22T01:34:20.2977309Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2977391Z               "line": 329
2026-06-22T01:34:20.2977480Z             },
2026-06-22T01:34:20.2977562Z             {
2026-06-22T01:34:20.2977682Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2977771Z               "line": 344
2026-06-22T01:34:20.2977856Z             },
2026-06-22T01:34:20.2977942Z             {
2026-06-22T01:34:20.2978071Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2978157Z               "line": 417
2026-06-22T01:34:20.2978242Z             },
2026-06-22T01:34:20.2978328Z             {
2026-06-22T01:34:20.2978434Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2978523Z               "line": 433
2026-06-22T01:34:20.2978605Z             },
2026-06-22T01:34:20.2981334Z             {
2026-06-22T01:34:20.2981482Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2981577Z               "line": 492
2026-06-22T01:34:20.2981658Z             },
2026-06-22T01:34:20.2981743Z             {
2026-06-22T01:34:20.2981868Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2981958Z               "line": 506
2026-06-22T01:34:20.2982048Z             },
2026-06-22T01:34:20.2982150Z             {
2026-06-22T01:34:20.2982259Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2982358Z               "line": 517
2026-06-22T01:34:20.2982431Z             },
2026-06-22T01:34:20.2982527Z             {
2026-06-22T01:34:20.2982640Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.2982722Z               "line": 528
2026-06-22T01:34:20.2982808Z             }
2026-06-22T01:34:20.2982888Z           ]
2026-06-22T01:34:20.2982963Z         }
2026-06-22T01:34:20.2983044Z       }
2026-06-22T01:34:20.2983130Z     },
2026-06-22T01:34:20.2983210Z     {
2026-06-22T01:34:20.2983342Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-22T01:34:20.2984039Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-22T01:34:20.2984125Z       "requiredStages": [
2026-06-22T01:34:20.2984358Z         "impl",
2026-06-22T01:34:20.2984435Z         "unit"
2026-06-22T01:34:20.2984525Z       ],
2026-06-22T01:34:20.2984712Z       "stages": {
2026-06-22T01:34:20.2984801Z         "doc": {
2026-06-22T01:34:20.2984901Z           "complete": false,
2026-06-22T01:34:20.2984988Z           "evidence": []
2026-06-22T01:34:20.2985075Z         },
2026-06-22T01:34:20.2985163Z         "impl": {
2026-06-22T01:34:20.2985259Z           "complete": true,
2026-06-22T01:34:20.2985341Z           "evidence": [
2026-06-22T01:34:20.2985427Z             {
2026-06-22T01:34:20.2985573Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2985654Z               "line": 27
2026-06-22T01:34:20.2985735Z             },
2026-06-22T01:34:20.2985823Z             {
2026-06-22T01:34:20.2985952Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2986048Z               "line": 110
2026-06-22T01:34:20.2986129Z             },
2026-06-22T01:34:20.2986214Z             {
2026-06-22T01:34:20.2986353Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2986444Z               "line": 153
2026-06-22T01:34:20.2986534Z             },
2026-06-22T01:34:20.2986610Z             {
2026-06-22T01:34:20.2986739Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2986824Z               "line": 182
2026-06-22T01:34:20.2986911Z             },
2026-06-22T01:34:20.2986997Z             {
2026-06-22T01:34:20.2987139Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.2987225Z               "line": 31
2026-06-22T01:34:20.2987312Z             },
2026-06-22T01:34:20.2987397Z             {
2026-06-22T01:34:20.2987540Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.2987627Z               "line": 113
2026-06-22T01:34:20.2987707Z             },
2026-06-22T01:34:20.2987792Z             {
2026-06-22T01:34:20.2987923Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.2988021Z               "line": 138
2026-06-22T01:34:20.2988103Z             }
2026-06-22T01:34:20.2988194Z           ]
2026-06-22T01:34:20.2988280Z         },
2026-06-22T01:34:20.2988364Z         "int": {
2026-06-22T01:34:20.2988463Z           "complete": false,
2026-06-22T01:34:20.2988545Z           "evidence": []
2026-06-22T01:34:20.2988632Z         },
2026-06-22T01:34:20.2988717Z         "unit": {
2026-06-22T01:34:20.2988807Z           "complete": true,
2026-06-22T01:34:20.2988894Z           "evidence": [
2026-06-22T01:34:20.2989069Z             {
2026-06-22T01:34:20.2989199Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2989285Z               "line": 261
2026-06-22T01:34:20.2989365Z             },
2026-06-22T01:34:20.2989456Z             {
2026-06-22T01:34:20.2989570Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2989656Z               "line": 276
2026-06-22T01:34:20.2989741Z             },
2026-06-22T01:34:20.2989819Z             {
2026-06-22T01:34:20.2989942Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2990047Z               "line": 293
2026-06-22T01:34:20.2990129Z             },
2026-06-22T01:34:20.2990205Z             {
2026-06-22T01:34:20.2990333Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2990419Z               "line": 310
2026-06-22T01:34:20.2990496Z             },
2026-06-22T01:34:20.2990581Z             {
2026-06-22T01:34:20.2990709Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2990790Z               "line": 327
2026-06-22T01:34:20.2990875Z             },
2026-06-22T01:34:20.2990964Z             {
2026-06-22T01:34:20.2991083Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.2991165Z               "line": 366
2026-06-22T01:34:20.2991250Z             },
2026-06-22T01:34:20.2991335Z             {
2026-06-22T01:34:20.2991470Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.2991679Z               "line": 179
2026-06-22T01:34:20.2991846Z             },
2026-06-22T01:34:20.2991932Z             {
2026-06-22T01:34:20.2992066Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.2992152Z               "line": 194
2026-06-22T01:34:20.2992232Z             },
2026-06-22T01:34:20.2992318Z             {
2026-06-22T01:34:20.2992448Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.2992533Z               "line": 204
2026-06-22T01:34:20.2992613Z             },
2026-06-22T01:34:20.2992701Z             {
2026-06-22T01:34:20.2992833Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.2992919Z               "line": 259
2026-06-22T01:34:20.2992996Z             },
2026-06-22T01:34:20.2993082Z             {
2026-06-22T01:34:20.2993220Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.2993311Z               "line": 269
2026-06-22T01:34:20.2993402Z             },
2026-06-22T01:34:20.2993491Z             {
2026-06-22T01:34:20.2993633Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.2993719Z               "line": 283
2026-06-22T01:34:20.2993803Z             }
2026-06-22T01:34:20.2993888Z           ]
2026-06-22T01:34:20.2993974Z         }
2026-06-22T01:34:20.2994060Z       }
2026-06-22T01:34:20.2994141Z     },
2026-06-22T01:34:20.2994217Z     {
2026-06-22T01:34:20.2994328Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-22T01:34:20.2994507Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-22T01:34:20.2994609Z       "requiredStages": [],
2026-06-22T01:34:20.2994695Z       "stages": {
2026-06-22T01:34:20.2994790Z         "doc": {
2026-06-22T01:34:20.2994875Z           "complete": false,
2026-06-22T01:34:20.2994957Z           "evidence": []
2026-06-22T01:34:20.2995042Z         },
2026-06-22T01:34:20.2995123Z         "impl": {
2026-06-22T01:34:20.2995223Z           "complete": false,
2026-06-22T01:34:20.2995310Z           "evidence": []
2026-06-22T01:34:20.2995390Z         },
2026-06-22T01:34:20.2995476Z         "int": {
2026-06-22T01:34:20.2995563Z           "complete": false,
2026-06-22T01:34:20.2995649Z           "evidence": []
2026-06-22T01:34:20.2995733Z         },
2026-06-22T01:34:20.2995819Z         "unit": {
2026-06-22T01:34:20.2995906Z           "complete": false,
2026-06-22T01:34:20.2995992Z           "evidence": []
2026-06-22T01:34:20.2996076Z         }
2026-06-22T01:34:20.2996161Z       }
2026-06-22T01:34:20.2996247Z     },
2026-06-22T01:34:20.2996323Z     {
2026-06-22T01:34:20.2996450Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-22T01:34:20.2997280Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-22T01:34:20.2997389Z       "requiredStages": [
2026-06-22T01:34:20.2997490Z         "impl",
2026-06-22T01:34:20.2997576Z         "unit"
2026-06-22T01:34:20.2997657Z       ],
2026-06-22T01:34:20.2997738Z       "stages": {
2026-06-22T01:34:20.2997829Z         "doc": {
2026-06-22T01:34:20.2997919Z           "complete": false,
2026-06-22T01:34:20.2998000Z           "evidence": []
2026-06-22T01:34:20.2998090Z         },
2026-06-22T01:34:20.2998178Z         "impl": {
2026-06-22T01:34:20.2998262Z           "complete": true,
2026-06-22T01:34:20.2998352Z           "evidence": [
2026-06-22T01:34:20.2998440Z             {
2026-06-22T01:34:20.2998562Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.2998648Z               "line": 26
2026-06-22T01:34:20.2998735Z             },
2026-06-22T01:34:20.2998812Z             {
2026-06-22T01:34:20.2998933Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.2999110Z               "line": 95
2026-06-22T01:34:20.2999310Z             },
2026-06-22T01:34:20.2999396Z             {
2026-06-22T01:34:20.2999610Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.2999691Z               "line": 166
2026-06-22T01:34:20.2999778Z             },
2026-06-22T01:34:20.2999854Z             {
2026-06-22T01:34:20.2999982Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:34:20.3000069Z               "line": 19
2026-06-22T01:34:20.3000145Z             },
2026-06-22T01:34:20.3000221Z             {
2026-06-22T01:34:20.3000335Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:34:20.3000413Z               "line": 50
2026-06-22T01:34:20.3000497Z             },
2026-06-22T01:34:20.3000583Z             {
2026-06-22T01:34:20.3000689Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:34:20.3000774Z               "line": 18
2026-06-22T01:34:20.3000855Z             },
2026-06-22T01:34:20.3000936Z             {
2026-06-22T01:34:20.3001043Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:34:20.3001131Z               "line": 71
2026-06-22T01:34:20.3001216Z             },
2026-06-22T01:34:20.3001302Z             {
2026-06-22T01:34:20.3001421Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3001505Z               "line": 87
2026-06-22T01:34:20.3001590Z             }
2026-06-22T01:34:20.3001672Z           ]
2026-06-22T01:34:20.3001758Z         },
2026-06-22T01:34:20.3001844Z         "int": {
2026-06-22T01:34:20.3001934Z           "complete": false,
2026-06-22T01:34:20.3002020Z           "evidence": []
2026-06-22T01:34:20.3002106Z         },
2026-06-22T01:34:20.3002196Z         "unit": {
2026-06-22T01:34:20.3002287Z           "complete": true,
2026-06-22T01:34:20.3002374Z           "evidence": [
2026-06-22T01:34:20.3002459Z             {
2026-06-22T01:34:20.3002568Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3002655Z               "line": 289
2026-06-22T01:34:20.3002736Z             },
2026-06-22T01:34:20.3002821Z             {
2026-06-22T01:34:20.3002941Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3003064Z               "line": 314
2026-06-22T01:34:20.3003150Z             },
2026-06-22T01:34:20.3003231Z             {
2026-06-22T01:34:20.3003341Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3003431Z               "line": 350
2026-06-22T01:34:20.3003507Z             },
2026-06-22T01:34:20.3003590Z             {
2026-06-22T01:34:20.3003712Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3003803Z               "line": 418
2026-06-22T01:34:20.3003890Z             },
2026-06-22T01:34:20.3003999Z             {
2026-06-22T01:34:20.3004102Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3004193Z               "line": 429
2026-06-22T01:34:20.3004269Z             },
2026-06-22T01:34:20.3004363Z             {
2026-06-22T01:34:20.3004481Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3004563Z               "line": 460
2026-06-22T01:34:20.3004644Z             },
2026-06-22T01:34:20.3004716Z             {
2026-06-22T01:34:20.3004854Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3004959Z               "line": 471
2026-06-22T01:34:20.3005049Z             },
2026-06-22T01:34:20.3005135Z             {
2026-06-22T01:34:20.3005250Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:34:20.3005336Z               "line": 77
2026-06-22T01:34:20.3005420Z             },
2026-06-22T01:34:20.3005508Z             {
2026-06-22T01:34:20.3005617Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:34:20.3005707Z               "line": 97
2026-06-22T01:34:20.3005793Z             },
2026-06-22T01:34:20.3005875Z             {
2026-06-22T01:34:20.3005988Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:34:20.3006074Z               "line": 112
2026-06-22T01:34:20.3006247Z             },
2026-06-22T01:34:20.3006341Z             {
2026-06-22T01:34:20.3006457Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:34:20.3006636Z               "line": 123
2026-06-22T01:34:20.3006721Z             },
2026-06-22T01:34:20.3006807Z             {
2026-06-22T01:34:20.3006920Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:34:20.3007010Z               "line": 130
2026-06-22T01:34:20.3007096Z             },
2026-06-22T01:34:20.3007178Z             {
2026-06-22T01:34:20.3007301Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:34:20.3007392Z               "line": 145
2026-06-22T01:34:20.3007479Z             },
2026-06-22T01:34:20.3007564Z             {
2026-06-22T01:34:20.3007678Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:34:20.3007798Z               "line": 115
2026-06-22T01:34:20.3007879Z             },
2026-06-22T01:34:20.3007963Z             {
2026-06-22T01:34:20.3008084Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:34:20.3008173Z               "line": 130
2026-06-22T01:34:20.3008254Z             },
2026-06-22T01:34:20.3008335Z             {
2026-06-22T01:34:20.3008451Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3008542Z               "line": 428
2026-06-22T01:34:20.3008627Z             }
2026-06-22T01:34:20.3008709Z           ]
2026-06-22T01:34:20.3008794Z         }
2026-06-22T01:34:20.3008875Z       }
2026-06-22T01:34:20.3009043Z     },
2026-06-22T01:34:20.3009123Z     {
2026-06-22T01:34:20.3009247Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-22T01:34:20.3015448Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-22T01:34:20.3015624Z       "requiredStages": [
2026-06-22T01:34:20.3015709Z         "impl",
2026-06-22T01:34:20.3015791Z         "unit",
2026-06-22T01:34:20.3015882Z         "int"
2026-06-22T01:34:20.3015966Z       ],
2026-06-22T01:34:20.3016048Z       "stages": {
2026-06-22T01:34:20.3016258Z         "doc": {
2026-06-22T01:34:20.3016344Z           "complete": false,
2026-06-22T01:34:20.3016538Z           "evidence": []
2026-06-22T01:34:20.3016630Z         },
2026-06-22T01:34:20.3016717Z         "impl": {
2026-06-22T01:34:20.3016802Z           "complete": true,
2026-06-22T01:34:20.3016897Z           "evidence": [
2026-06-22T01:34:20.3016983Z             {
2026-06-22T01:34:20.3017108Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3017210Z               "line": 1038
2026-06-22T01:34:20.3017296Z             },
2026-06-22T01:34:20.3017387Z             {
2026-06-22T01:34:20.3017509Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.3017604Z               "line": 322
2026-06-22T01:34:20.3017694Z             }
2026-06-22T01:34:20.3017782Z           ]
2026-06-22T01:34:20.3017870Z         },
2026-06-22T01:34:20.3017947Z         "int": {
2026-06-22T01:34:20.3018048Z           "complete": true,
2026-06-22T01:34:20.3018143Z           "evidence": [
2026-06-22T01:34:20.3018228Z             {
2026-06-22T01:34:20.3018386Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.3018486Z               "line": 2013
2026-06-22T01:34:20.3018572Z             }
2026-06-22T01:34:20.3018649Z           ]
2026-06-22T01:34:20.3018738Z         },
2026-06-22T01:34:20.3018819Z         "unit": {
2026-06-22T01:34:20.3018920Z           "complete": true,
2026-06-22T01:34:20.3019182Z           "evidence": [
2026-06-22T01:34:20.3019274Z             {
2026-06-22T01:34:20.3019392Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3019482Z               "line": 2877
2026-06-22T01:34:20.3019574Z             },
2026-06-22T01:34:20.3019655Z             {
2026-06-22T01:34:20.3019774Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3019865Z               "line": 2941
2026-06-22T01:34:20.3019951Z             },
2026-06-22T01:34:20.3020040Z             {
2026-06-22T01:34:20.3020163Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3020264Z               "line": 2996
2026-06-22T01:34:20.3020341Z             }
2026-06-22T01:34:20.3020425Z           ]
2026-06-22T01:34:20.3020521Z         }
2026-06-22T01:34:20.3020598Z       }
2026-06-22T01:34:20.3020725Z     },
2026-06-22T01:34:20.3020807Z     {
2026-06-22T01:34:20.3020960Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-22T01:34:20.3021809Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-22T01:34:20.3021904Z       "requiredStages": [
2026-06-22T01:34:20.3021989Z         "doc",
2026-06-22T01:34:20.3022076Z         "impl",
2026-06-22T01:34:20.3022168Z         "unit"
2026-06-22T01:34:20.3022247Z       ],
2026-06-22T01:34:20.3022337Z       "stages": {
2026-06-22T01:34:20.3022442Z         "doc": {
2026-06-22T01:34:20.3022550Z           "complete": true,
2026-06-22T01:34:20.3022654Z           "evidence": [
2026-06-22T01:34:20.3022729Z             {
2026-06-22T01:34:20.3022850Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3022935Z               "line": 374
2026-06-22T01:34:20.3023025Z             }
2026-06-22T01:34:20.3023112Z           ]
2026-06-22T01:34:20.3023193Z         },
2026-06-22T01:34:20.3023283Z         "impl": {
2026-06-22T01:34:20.3023368Z           "complete": true,
2026-06-22T01:34:20.3023465Z           "evidence": [
2026-06-22T01:34:20.3023541Z             {
2026-06-22T01:34:20.3023664Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3023752Z               "line": 206
2026-06-22T01:34:20.3023832Z             },
2026-06-22T01:34:20.3023922Z             {
2026-06-22T01:34:20.3024032Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3024118Z               "line": 310
2026-06-22T01:34:20.3024313Z             },
2026-06-22T01:34:20.3024400Z             {
2026-06-22T01:34:20.3024513Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3024691Z               "line": 568
2026-06-22T01:34:20.3024781Z             },
2026-06-22T01:34:20.3024866Z             {
2026-06-22T01:34:20.3024977Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3025063Z               "line": 583
2026-06-22T01:34:20.3025147Z             },
2026-06-22T01:34:20.3025275Z             {
2026-06-22T01:34:20.3025380Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3025474Z               "line": 1318
2026-06-22T01:34:20.3025549Z             },
2026-06-22T01:34:20.3025635Z             {
2026-06-22T01:34:20.3025756Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.3025855Z               "line": 443
2026-06-22T01:34:20.3025936Z             },
2026-06-22T01:34:20.3026022Z             {
2026-06-22T01:34:20.3026155Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.3026240Z               "line": 590
2026-06-22T01:34:20.3026337Z             },
2026-06-22T01:34:20.3026418Z             {
2026-06-22T01:34:20.3026536Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.3026628Z               "line": 731
2026-06-22T01:34:20.3026713Z             }
2026-06-22T01:34:20.3026804Z           ]
2026-06-22T01:34:20.3026885Z         },
2026-06-22T01:34:20.3026971Z         "int": {
2026-06-22T01:34:20.3027066Z           "complete": false,
2026-06-22T01:34:20.3027161Z           "evidence": []
2026-06-22T01:34:20.3027248Z         },
2026-06-22T01:34:20.3027334Z         "unit": {
2026-06-22T01:34:20.3027432Z           "complete": true,
2026-06-22T01:34:20.3027524Z           "evidence": [
2026-06-22T01:34:20.3027615Z             {
2026-06-22T01:34:20.3027733Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.3027827Z               "line": 1155
2026-06-22T01:34:20.3027909Z             },
2026-06-22T01:34:20.3027999Z             {
2026-06-22T01:34:20.3028135Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-22T01:34:20.3028226Z               "line": 30
2026-06-22T01:34:20.3028308Z             }
2026-06-22T01:34:20.3028393Z           ]
2026-06-22T01:34:20.3028488Z         }
2026-06-22T01:34:20.3028575Z       }
2026-06-22T01:34:20.3028665Z     },
2026-06-22T01:34:20.3028755Z     {
2026-06-22T01:34:20.3028866Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-22T01:34:20.3032245Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-22T01:34:20.3032355Z       "requiredStages": [
2026-06-22T01:34:20.3032455Z         "impl",
2026-06-22T01:34:20.3032540Z         "unit",
2026-06-22T01:34:20.3032631Z         "int"
2026-06-22T01:34:20.3032728Z       ],
2026-06-22T01:34:20.3032817Z       "stages": {
2026-06-22T01:34:20.3032902Z         "doc": {
2026-06-22T01:34:20.3032997Z           "complete": false,
2026-06-22T01:34:20.3033097Z           "evidence": []
2026-06-22T01:34:20.3033294Z         },
2026-06-22T01:34:20.3033391Z         "impl": {
2026-06-22T01:34:20.3033590Z           "complete": true,
2026-06-22T01:34:20.3033681Z           "evidence": [
2026-06-22T01:34:20.3033763Z             {
2026-06-22T01:34:20.3033872Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3033958Z               "line": 718
2026-06-22T01:34:20.3034044Z             },
2026-06-22T01:34:20.3034130Z             {
2026-06-22T01:34:20.3034239Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3034331Z               "line": 887
2026-06-22T01:34:20.3034421Z             }
2026-06-22T01:34:20.3034501Z           ]
2026-06-22T01:34:20.3034592Z         },
2026-06-22T01:34:20.3034674Z         "int": {
2026-06-22T01:34:20.3034778Z           "complete": true,
2026-06-22T01:34:20.3034864Z           "evidence": [
2026-06-22T01:34:20.3034946Z             {
2026-06-22T01:34:20.3035064Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:34:20.3035164Z               "line": 420
2026-06-22T01:34:20.3035246Z             }
2026-06-22T01:34:20.3035332Z           ]
2026-06-22T01:34:20.3035431Z         },
2026-06-22T01:34:20.3035512Z         "unit": {
2026-06-22T01:34:20.3035609Z           "complete": true,
2026-06-22T01:34:20.3035703Z           "evidence": [
2026-06-22T01:34:20.3035793Z             {
2026-06-22T01:34:20.3035907Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3036001Z               "line": 1072
2026-06-22T01:34:20.3036096Z             },
2026-06-22T01:34:20.3036186Z             {
2026-06-22T01:34:20.3036287Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3036381Z               "line": 1096
2026-06-22T01:34:20.3036467Z             }
2026-06-22T01:34:20.3036564Z           ]
2026-06-22T01:34:20.3036649Z         }
2026-06-22T01:34:20.3036734Z       }
2026-06-22T01:34:20.3036820Z     },
2026-06-22T01:34:20.3036907Z     {
2026-06-22T01:34:20.3037025Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-22T01:34:20.3040733Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-22T01:34:20.3040851Z       "requiredStages": [
2026-06-22T01:34:20.3040936Z         "impl",
2026-06-22T01:34:20.3041024Z         "unit",
2026-06-22T01:34:20.3041109Z         "int"
2026-06-22T01:34:20.3041193Z       ],
2026-06-22T01:34:20.3041288Z       "stages": {
2026-06-22T01:34:20.3041374Z         "doc": {
2026-06-22T01:34:20.3041475Z           "complete": false,
2026-06-22T01:34:20.3041564Z           "evidence": []
2026-06-22T01:34:20.3041661Z         },
2026-06-22T01:34:20.3041751Z         "impl": {
2026-06-22T01:34:20.3041851Z           "complete": true,
2026-06-22T01:34:20.3042076Z           "evidence": [
2026-06-22T01:34:20.3042161Z             {
2026-06-22T01:34:20.3042348Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3042432Z               "line": 1417
2026-06-22T01:34:20.3042527Z             },
2026-06-22T01:34:20.3042620Z             {
2026-06-22T01:34:20.3042724Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3042824Z               "line": 1441
2026-06-22T01:34:20.3042910Z             }
2026-06-22T01:34:20.3043001Z           ]
2026-06-22T01:34:20.3043090Z         },
2026-06-22T01:34:20.3043191Z         "int": {
2026-06-22T01:34:20.3043288Z           "complete": true,
2026-06-22T01:34:20.3043377Z           "evidence": [
2026-06-22T01:34:20.3043467Z             {
2026-06-22T01:34:20.3043590Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T01:34:20.3043676Z               "line": 329
2026-06-22T01:34:20.3043755Z             }
2026-06-22T01:34:20.3043854Z           ]
2026-06-22T01:34:20.3043999Z         },
2026-06-22T01:34:20.3044079Z         "unit": {
2026-06-22T01:34:20.3044174Z           "complete": true,
2026-06-22T01:34:20.3044261Z           "evidence": [
2026-06-22T01:34:20.3044347Z             {
2026-06-22T01:34:20.3044456Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3044547Z               "line": 8169
2026-06-22T01:34:20.3044637Z             }
2026-06-22T01:34:20.3044718Z           ]
2026-06-22T01:34:20.3044804Z         }
2026-06-22T01:34:20.3044886Z       }
2026-06-22T01:34:20.3044971Z     },
2026-06-22T01:34:20.3045056Z     {
2026-06-22T01:34:20.3045162Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-22T01:34:20.3049137Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-22T01:34:20.3049284Z       "requiredStages": [
2026-06-22T01:34:20.3049371Z         "impl",
2026-06-22T01:34:20.3049457Z         "unit"
2026-06-22T01:34:20.3049565Z       ],
2026-06-22T01:34:20.3049646Z       "stages": {
2026-06-22T01:34:20.3049743Z         "doc": {
2026-06-22T01:34:20.3049823Z           "complete": false,
2026-06-22T01:34:20.3049913Z           "evidence": []
2026-06-22T01:34:20.3049996Z         },
2026-06-22T01:34:20.3050091Z         "impl": {
2026-06-22T01:34:20.3050176Z           "complete": true,
2026-06-22T01:34:20.3050267Z           "evidence": [
2026-06-22T01:34:20.3050358Z             {
2026-06-22T01:34:20.3050457Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3050547Z               "line": 910
2026-06-22T01:34:20.3050635Z             }
2026-06-22T01:34:20.3050715Z           ]
2026-06-22T01:34:20.3050801Z         },
2026-06-22T01:34:20.3050886Z         "int": {
2026-06-22T01:34:20.3050987Z           "complete": false,
2026-06-22T01:34:20.3051072Z           "evidence": []
2026-06-22T01:34:20.3051279Z         },
2026-06-22T01:34:20.3051368Z         "unit": {
2026-06-22T01:34:20.3051468Z           "complete": true,
2026-06-22T01:34:20.3051886Z           "evidence": [
2026-06-22T01:34:20.3051974Z             {
2026-06-22T01:34:20.3052087Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3052182Z               "line": 1112
2026-06-22T01:34:20.3052274Z             }
2026-06-22T01:34:20.3052360Z           ]
2026-06-22T01:34:20.3052453Z         }
2026-06-22T01:34:20.3052541Z       }
2026-06-22T01:34:20.3052626Z     },
2026-06-22T01:34:20.3052707Z     {
2026-06-22T01:34:20.3052831Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-22T01:34:20.3057398Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T01:34:20.3057578Z       "requiredStages": [
2026-06-22T01:34:20.3057659Z         "impl",
2026-06-22T01:34:20.3057745Z         "unit"
2026-06-22T01:34:20.3057831Z       ],
2026-06-22T01:34:20.3057926Z       "stages": {
2026-06-22T01:34:20.3057999Z         "doc": {
2026-06-22T01:34:20.3058103Z           "complete": false,
2026-06-22T01:34:20.3058188Z           "evidence": []
2026-06-22T01:34:20.3058274Z         },
2026-06-22T01:34:20.3058361Z         "impl": {
2026-06-22T01:34:20.3058441Z           "complete": true,
2026-06-22T01:34:20.3058527Z           "evidence": [
2026-06-22T01:34:20.3058613Z             {
2026-06-22T01:34:20.3058727Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3058813Z               "line": 264
2026-06-22T01:34:20.3058899Z             }
2026-06-22T01:34:20.3059084Z           ]
2026-06-22T01:34:20.3059166Z         },
2026-06-22T01:34:20.3059257Z         "int": {
2026-06-22T01:34:20.3059380Z           "complete": false,
2026-06-22T01:34:20.3059475Z           "evidence": []
2026-06-22T01:34:20.3059561Z         },
2026-06-22T01:34:20.3059646Z         "unit": {
2026-06-22T01:34:20.3059735Z           "complete": true,
2026-06-22T01:34:20.3059825Z           "evidence": [
2026-06-22T01:34:20.3059911Z             {
2026-06-22T01:34:20.3060017Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3060111Z               "line": 1094
2026-06-22T01:34:20.3060193Z             },
2026-06-22T01:34:20.3060274Z             {
2026-06-22T01:34:20.3060383Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3060473Z               "line": 1225
2026-06-22T01:34:20.3060556Z             },
2026-06-22T01:34:20.3060641Z             {
2026-06-22T01:34:20.3060740Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3060832Z               "line": 1227
2026-06-22T01:34:20.3061037Z             }
2026-06-22T01:34:20.3061122Z           ]
2026-06-22T01:34:20.3061303Z         }
2026-06-22T01:34:20.3061389Z       }
2026-06-22T01:34:20.3061476Z     },
2026-06-22T01:34:20.3061566Z     {
2026-06-22T01:34:20.3061680Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-22T01:34:20.3061942Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-22T01:34:20.3062043Z       "requiredStages": [
2026-06-22T01:34:20.3062125Z         "impl",
2026-06-22T01:34:20.3062210Z         "unit"
2026-06-22T01:34:20.3062280Z       ],
2026-06-22T01:34:20.3062370Z       "stages": {
2026-06-22T01:34:20.3062456Z         "doc": {
2026-06-22T01:34:20.3062562Z           "complete": true,
2026-06-22T01:34:20.3062652Z           "evidence": [
2026-06-22T01:34:20.3062742Z             {
2026-06-22T01:34:20.3062853Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3062943Z               "line": 139
2026-06-22T01:34:20.3063033Z             }
2026-06-22T01:34:20.3063120Z           ]
2026-06-22T01:34:20.3063206Z         },
2026-06-22T01:34:20.3063305Z         "impl": {
2026-06-22T01:34:20.3063396Z           "complete": true,
2026-06-22T01:34:20.3063482Z           "evidence": [
2026-06-22T01:34:20.3063563Z             {
2026-06-22T01:34:20.3063672Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T01:34:20.3063755Z               "line": 29
2026-06-22T01:34:20.3063840Z             },
2026-06-22T01:34:20.3063925Z             {
2026-06-22T01:34:20.3064026Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T01:34:20.3064112Z               "line": 67
2026-06-22T01:34:20.3064197Z             },
2026-06-22T01:34:20.3064278Z             {
2026-06-22T01:34:20.3064389Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3064479Z               "line": 101
2026-06-22T01:34:20.3064572Z             },
2026-06-22T01:34:20.3064653Z             {
2026-06-22T01:34:20.3064777Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3064861Z               "line": 30
2026-06-22T01:34:20.3064956Z             },
2026-06-22T01:34:20.3065042Z             {
2026-06-22T01:34:20.3065153Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.3065237Z               "line": 48
2026-06-22T01:34:20.3065318Z             }
2026-06-22T01:34:20.3065410Z           ]
2026-06-22T01:34:20.3065486Z         },
2026-06-22T01:34:20.3065580Z         "int": {
2026-06-22T01:34:20.3065677Z           "complete": false,
2026-06-22T01:34:20.3065777Z           "evidence": []
2026-06-22T01:34:20.3065853Z         },
2026-06-22T01:34:20.3065939Z         "unit": {
2026-06-22T01:34:20.3066040Z           "complete": true,
2026-06-22T01:34:20.3066130Z           "evidence": [
2026-06-22T01:34:20.3066219Z             {
2026-06-22T01:34:20.3066340Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3066439Z               "line": 162
2026-06-22T01:34:20.3066539Z             }
2026-06-22T01:34:20.3066631Z           ]
2026-06-22T01:34:20.3066721Z         }
2026-06-22T01:34:20.3066812Z       }
2026-06-22T01:34:20.3066902Z     },
2026-06-22T01:34:20.3070943Z     {
2026-06-22T01:34:20.3071106Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-22T01:34:20.3071549Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-22T01:34:20.3071659Z       "requiredStages": [
2026-06-22T01:34:20.3071745Z         "doc",
2026-06-22T01:34:20.3071830Z         "impl",
2026-06-22T01:34:20.3071911Z         "unit"
2026-06-22T01:34:20.3071997Z       ],
2026-06-22T01:34:20.3072084Z       "stages": {
2026-06-22T01:34:20.3072164Z         "doc": {
2026-06-22T01:34:20.3072259Z           "complete": true,
2026-06-22T01:34:20.3072341Z           "evidence": [
2026-06-22T01:34:20.3072423Z             {
2026-06-22T01:34:20.3072526Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3072612Z               "line": 151
2026-06-22T01:34:20.3072874Z             }
2026-06-22T01:34:20.3072959Z           ]
2026-06-22T01:34:20.3073160Z         },
2026-06-22T01:34:20.3073241Z         "impl": {
2026-06-22T01:34:20.3073341Z           "complete": true,
2026-06-22T01:34:20.3073427Z           "evidence": [
2026-06-22T01:34:20.3073517Z             {
2026-06-22T01:34:20.3073637Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3073723Z               "line": 22
2026-06-22T01:34:20.3073804Z             }
2026-06-22T01:34:20.3073884Z           ]
2026-06-22T01:34:20.3073965Z         },
2026-06-22T01:34:20.3074051Z         "int": {
2026-06-22T01:34:20.3074137Z           "complete": false,
2026-06-22T01:34:20.3074227Z           "evidence": []
2026-06-22T01:34:20.3074320Z         },
2026-06-22T01:34:20.3074404Z         "unit": {
2026-06-22T01:34:20.3074499Z           "complete": true,
2026-06-22T01:34:20.3074591Z           "evidence": [
2026-06-22T01:34:20.3074677Z             {
2026-06-22T01:34:20.3074814Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3074924Z               "line": 298
2026-06-22T01:34:20.3075020Z             }
2026-06-22T01:34:20.3075100Z           ]
2026-06-22T01:34:20.3075180Z         }
2026-06-22T01:34:20.3075266Z       }
2026-06-22T01:34:20.3075347Z     },
2026-06-22T01:34:20.3075441Z     {
2026-06-22T01:34:20.3075559Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-22T01:34:20.3076022Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-22T01:34:20.3076126Z       "requiredStages": [
2026-06-22T01:34:20.3076208Z         "impl",
2026-06-22T01:34:20.3076295Z         "unit"
2026-06-22T01:34:20.3076384Z       ],
2026-06-22T01:34:20.3076469Z       "stages": {
2026-06-22T01:34:20.3076557Z         "doc": {
2026-06-22T01:34:20.3076652Z           "complete": true,
2026-06-22T01:34:20.3076751Z           "evidence": [
2026-06-22T01:34:20.3076852Z             {
2026-06-22T01:34:20.3076971Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3077062Z               "line": 145
2026-06-22T01:34:20.3077167Z             }
2026-06-22T01:34:20.3077258Z           ]
2026-06-22T01:34:20.3077337Z         },
2026-06-22T01:34:20.3077433Z         "impl": {
2026-06-22T01:34:20.3077525Z           "complete": true,
2026-06-22T01:34:20.3077619Z           "evidence": [
2026-06-22T01:34:20.3077701Z             {
2026-06-22T01:34:20.3077840Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T01:34:20.3077930Z               "line": 160
2026-06-22T01:34:20.3078014Z             },
2026-06-22T01:34:20.3078099Z             {
2026-06-22T01:34:20.3078228Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3078308Z               "line": 200
2026-06-22T01:34:20.3078393Z             },
2026-06-22T01:34:20.3078479Z             {
2026-06-22T01:34:20.3078604Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3078698Z               "line": 298
2026-06-22T01:34:20.3078785Z             },
2026-06-22T01:34:20.3078871Z             {
2026-06-22T01:34:20.3079065Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T01:34:20.3079152Z               "line": 20
2026-06-22T01:34:20.3079233Z             }
2026-06-22T01:34:20.3079322Z           ]
2026-06-22T01:34:20.3079409Z         },
2026-06-22T01:34:20.3079500Z         "int": {
2026-06-22T01:34:20.3079591Z           "complete": false,
2026-06-22T01:34:20.3079681Z           "evidence": []
2026-06-22T01:34:20.3079767Z         },
2026-06-22T01:34:20.3079857Z         "unit": {
2026-06-22T01:34:20.3079943Z           "complete": true,
2026-06-22T01:34:20.3080029Z           "evidence": [
2026-06-22T01:34:20.3080111Z             {
2026-06-22T01:34:20.3080238Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3080325Z               "line": 937
2026-06-22T01:34:20.3080392Z             },
2026-06-22T01:34:20.3080605Z             {
2026-06-22T01:34:20.3080733Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T01:34:20.3080912Z               "line": 88
2026-06-22T01:34:20.3081003Z             },
2026-06-22T01:34:20.3081089Z             {
2026-06-22T01:34:20.3081217Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3081308Z               "line": 851
2026-06-22T01:34:20.3081390Z             },
2026-06-22T01:34:20.3081481Z             {
2026-06-22T01:34:20.3081584Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3081671Z               "line": 870
2026-06-22T01:34:20.3081756Z             },
2026-06-22T01:34:20.3081846Z             {
2026-06-22T01:34:20.3081962Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.3082039Z               "line": 279
2026-06-22T01:34:20.3082118Z             },
2026-06-22T01:34:20.3082204Z             {
2026-06-22T01:34:20.3082315Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T01:34:20.3082405Z               "line": 82
2026-06-22T01:34:20.3082490Z             },
2026-06-22T01:34:20.3082581Z             {
2026-06-22T01:34:20.3082696Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T01:34:20.3082796Z               "line": 99
2026-06-22T01:34:20.3082882Z             },
2026-06-22T01:34:20.3082969Z             {
2026-06-22T01:34:20.3083076Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T01:34:20.3083172Z               "line": 119
2026-06-22T01:34:20.3083259Z             }
2026-06-22T01:34:20.3083340Z           ]
2026-06-22T01:34:20.3083429Z         }
2026-06-22T01:34:20.3083514Z       }
2026-06-22T01:34:20.3083601Z     },
2026-06-22T01:34:20.3083683Z     {
2026-06-22T01:34:20.3083796Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-22T01:34:20.3085088Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-22T01:34:20.3085204Z       "requiredStages": [
2026-06-22T01:34:20.3085293Z         "doc",
2026-06-22T01:34:20.3085379Z         "impl",
2026-06-22T01:34:20.3085465Z         "unit"
2026-06-22T01:34:20.3085557Z       ],
2026-06-22T01:34:20.3085641Z       "stages": {
2026-06-22T01:34:20.3085731Z         "doc": {
2026-06-22T01:34:20.3085812Z           "complete": true,
2026-06-22T01:34:20.3085897Z           "evidence": [
2026-06-22T01:34:20.3085981Z             {
2026-06-22T01:34:20.3086086Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3086182Z               "line": 157
2026-06-22T01:34:20.3086264Z             }
2026-06-22T01:34:20.3086353Z           ]
2026-06-22T01:34:20.3086439Z         },
2026-06-22T01:34:20.3086545Z         "impl": {
2026-06-22T01:34:20.3086635Z           "complete": true,
2026-06-22T01:34:20.3086729Z           "evidence": [
2026-06-22T01:34:20.3086826Z             {
2026-06-22T01:34:20.3086958Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:34:20.3087054Z               "line": 137
2026-06-22T01:34:20.3087136Z             },
2026-06-22T01:34:20.3087212Z             {
2026-06-22T01:34:20.3087331Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3087417Z               "line": 564
2026-06-22T01:34:20.3087503Z             },
2026-06-22T01:34:20.3087588Z             {
2026-06-22T01:34:20.3087722Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3087808Z               "line": 571
2026-06-22T01:34:20.3087893Z             },
2026-06-22T01:34:20.3087984Z             {
2026-06-22T01:34:20.3088104Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3088189Z               "line": 227
2026-06-22T01:34:20.3088357Z             }
2026-06-22T01:34:20.3088448Z           ]
2026-06-22T01:34:20.3088522Z         },
2026-06-22T01:34:20.3088684Z         "int": {
2026-06-22T01:34:20.3088769Z           "complete": false,
2026-06-22T01:34:20.3088863Z           "evidence": []
2026-06-22T01:34:20.3089025Z         },
2026-06-22T01:34:20.3089111Z         "unit": {
2026-06-22T01:34:20.3089206Z           "complete": true,
2026-06-22T01:34:20.3089292Z           "evidence": [
2026-06-22T01:34:20.3089378Z             {
2026-06-22T01:34:20.3089497Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3089596Z               "line": 1622
2026-06-22T01:34:20.3089683Z             },
2026-06-22T01:34:20.3089769Z             {
2026-06-22T01:34:20.3089892Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3089979Z               "line": 1680
2026-06-22T01:34:20.3090065Z             },
2026-06-22T01:34:20.3090146Z             {
2026-06-22T01:34:20.3090260Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3090361Z               "line": 883
2026-06-22T01:34:20.3090441Z             }
2026-06-22T01:34:20.3090517Z           ]
2026-06-22T01:34:20.3090614Z         }
2026-06-22T01:34:20.3090695Z       }
2026-06-22T01:34:20.3090779Z     },
2026-06-22T01:34:20.3090865Z     {
2026-06-22T01:34:20.3090981Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-22T01:34:20.3091160Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-22T01:34:20.3091255Z       "requiredStages": [
2026-06-22T01:34:20.3091341Z         "impl",
2026-06-22T01:34:20.3091430Z         "unit"
2026-06-22T01:34:20.3091515Z       ],
2026-06-22T01:34:20.3091596Z       "stages": {
2026-06-22T01:34:20.3091678Z         "doc": {
2026-06-22T01:34:20.3091763Z           "complete": false,
2026-06-22T01:34:20.3091849Z           "evidence": []
2026-06-22T01:34:20.3091931Z         },
2026-06-22T01:34:20.3092016Z         "impl": {
2026-06-22T01:34:20.3092115Z           "complete": true,
2026-06-22T01:34:20.3092207Z           "evidence": [
2026-06-22T01:34:20.3092293Z             {
2026-06-22T01:34:20.3092421Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.3092512Z               "line": 15
2026-06-22T01:34:20.3092599Z             },
2026-06-22T01:34:20.3092683Z             {
2026-06-22T01:34:20.3092793Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3092885Z               "line": 55
2026-06-22T01:34:20.3092974Z             },
2026-06-22T01:34:20.3093060Z             {
2026-06-22T01:34:20.3093171Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3093257Z               "line": 66
2026-06-22T01:34:20.3093341Z             },
2026-06-22T01:34:20.3093427Z             {
2026-06-22T01:34:20.3093538Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3093623Z               "line": 115
2026-06-22T01:34:20.3093708Z             },
2026-06-22T01:34:20.3093796Z             {
2026-06-22T01:34:20.3093910Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3093994Z               "line": 138
2026-06-22T01:34:20.3094079Z             }
2026-06-22T01:34:20.3094161Z           ]
2026-06-22T01:34:20.3094248Z         },
2026-06-22T01:34:20.3094327Z         "int": {
2026-06-22T01:34:20.3094427Z           "complete": false,
2026-06-22T01:34:20.3094505Z           "evidence": []
2026-06-22T01:34:20.3094595Z         },
2026-06-22T01:34:20.3094675Z         "unit": {
2026-06-22T01:34:20.3094767Z           "complete": true,
2026-06-22T01:34:20.3094853Z           "evidence": [
2026-06-22T01:34:20.3094938Z             {
2026-06-22T01:34:20.3095047Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.3095134Z               "line": 363
2026-06-22T01:34:20.3095210Z             },
2026-06-22T01:34:20.3095300Z             {
2026-06-22T01:34:20.3095411Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.3095496Z               "line": 369
2026-06-22T01:34:20.3095686Z             },
2026-06-22T01:34:20.3095769Z             {
2026-06-22T01:34:20.3095968Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.3096054Z               "line": 383
2026-06-22T01:34:20.3096136Z             },
2026-06-22T01:34:20.3096220Z             {
2026-06-22T01:34:20.3096333Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.3096425Z               "line": 392
2026-06-22T01:34:20.3096509Z             },
2026-06-22T01:34:20.3096594Z             {
2026-06-22T01:34:20.3096708Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3096800Z               "line": 195
2026-06-22T01:34:20.3096885Z             },
2026-06-22T01:34:20.3096965Z             {
2026-06-22T01:34:20.3097071Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3097157Z               "line": 208
2026-06-22T01:34:20.3097233Z             },
2026-06-22T01:34:20.3097314Z             {
2026-06-22T01:34:20.3097438Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3097523Z               "line": 271
2026-06-22T01:34:20.3097619Z             },
2026-06-22T01:34:20.3097706Z             {
2026-06-22T01:34:20.3097819Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3097905Z               "line": 290
2026-06-22T01:34:20.3097992Z             },
2026-06-22T01:34:20.3098077Z             {
2026-06-22T01:34:20.3098186Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3098273Z               "line": 319
2026-06-22T01:34:20.3098359Z             }
2026-06-22T01:34:20.3098444Z           ]
2026-06-22T01:34:20.3098520Z         }
2026-06-22T01:34:20.3098602Z       }
2026-06-22T01:34:20.3098683Z     },
2026-06-22T01:34:20.3098763Z     {
2026-06-22T01:34:20.3098868Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-22T01:34:20.3099205Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-22T01:34:20.3099306Z       "requiredStages": [
2026-06-22T01:34:20.3099381Z         "impl",
2026-06-22T01:34:20.3099475Z         "unit",
2026-06-22T01:34:20.3099561Z         "int"
2026-06-22T01:34:20.3099643Z       ],
2026-06-22T01:34:20.3099733Z       "stages": {
2026-06-22T01:34:20.3099818Z         "doc": {
2026-06-22T01:34:20.3099915Z           "complete": false,
2026-06-22T01:34:20.3099996Z           "evidence": []
2026-06-22T01:34:20.3100076Z         },
2026-06-22T01:34:20.3100166Z         "impl": {
2026-06-22T01:34:20.3100253Z           "complete": true,
2026-06-22T01:34:20.3100339Z           "evidence": [
2026-06-22T01:34:20.3100424Z             {
2026-06-22T01:34:20.3100539Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3100630Z               "line": 480
2026-06-22T01:34:20.3100715Z             },
2026-06-22T01:34:20.3100801Z             {
2026-06-22T01:34:20.3100902Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3100997Z               "line": 1010
2026-06-22T01:34:20.3101082Z             },
2026-06-22T01:34:20.3101169Z             {
2026-06-22T01:34:20.3101278Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3101368Z               "line": 1055
2026-06-22T01:34:20.3101445Z             },
2026-06-22T01:34:20.3101522Z             {
2026-06-22T01:34:20.3101635Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3101720Z               "line": 1080
2026-06-22T01:34:20.3101806Z             },
2026-06-22T01:34:20.3101892Z             {
2026-06-22T01:34:20.3102009Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3102099Z               "line": 1874
2026-06-22T01:34:20.3102175Z             },
2026-06-22T01:34:20.3102253Z             {
2026-06-22T01:34:20.3102370Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3102452Z               "line": 2156
2026-06-22T01:34:20.3102539Z             },
2026-06-22T01:34:20.3102624Z             {
2026-06-22T01:34:20.3102839Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3102915Z               "line": 2287
2026-06-22T01:34:20.3103111Z             },
2026-06-22T01:34:20.3103192Z             {
2026-06-22T01:34:20.3103315Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3103396Z               "line": 2335
2026-06-22T01:34:20.3103483Z             },
2026-06-22T01:34:20.3103568Z             {
2026-06-22T01:34:20.3103668Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.3103750Z               "line": 46
2026-06-22T01:34:20.3103840Z             },
2026-06-22T01:34:20.3103926Z             {
2026-06-22T01:34:20.3104031Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.3104118Z               "line": 200
2026-06-22T01:34:20.3104211Z             },
2026-06-22T01:34:20.3104292Z             {
2026-06-22T01:34:20.3104408Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:34:20.3104498Z               "line": 132
2026-06-22T01:34:20.3104582Z             },
2026-06-22T01:34:20.3104678Z             {
2026-06-22T01:34:20.3104788Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.3104873Z               "line": 137
2026-06-22T01:34:20.3104959Z             },
2026-06-22T01:34:20.3105045Z             {
2026-06-22T01:34:20.3105161Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.3105245Z               "line": 183
2026-06-22T01:34:20.3105341Z             }
2026-06-22T01:34:20.3105422Z           ]
2026-06-22T01:34:20.3105508Z         },
2026-06-22T01:34:20.3105593Z         "int": {
2026-06-22T01:34:20.3105690Z           "complete": true,
2026-06-22T01:34:20.3105779Z           "evidence": [
2026-06-22T01:34:20.3105874Z             {
2026-06-22T01:34:20.3106014Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-22T01:34:20.3106103Z               "line": 27
2026-06-22T01:34:20.3106194Z             },
2026-06-22T01:34:20.3106276Z             {
2026-06-22T01:34:20.3106413Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:34:20.3106508Z               "line": 148
2026-06-22T01:34:20.3106595Z             },
2026-06-22T01:34:20.3106677Z             {
2026-06-22T01:34:20.3106794Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T01:34:20.3106884Z               "line": 200
2026-06-22T01:34:20.3106970Z             }
2026-06-22T01:34:20.3107055Z           ]
2026-06-22T01:34:20.3107140Z         },
2026-06-22T01:34:20.3107230Z         "unit": {
2026-06-22T01:34:20.3107326Z           "complete": true,
2026-06-22T01:34:20.3107416Z           "evidence": [
2026-06-22T01:34:20.3107502Z             {
2026-06-22T01:34:20.3107622Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.3107717Z               "line": 366
2026-06-22T01:34:20.3107797Z             },
2026-06-22T01:34:20.3107884Z             {
2026-06-22T01:34:20.3108003Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.3108088Z               "line": 398
2026-06-22T01:34:20.3108169Z             },
2026-06-22T01:34:20.3108252Z             {
2026-06-22T01:34:20.3108370Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:34:20.3108455Z               "line": 419
2026-06-22T01:34:20.3108537Z             },
2026-06-22T01:34:20.3108627Z             {
2026-06-22T01:34:20.3108737Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.3108828Z               "line": 631
2026-06-22T01:34:20.3108915Z             },
2026-06-22T01:34:20.3109118Z             {
2026-06-22T01:34:20.3109281Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T01:34:20.3109371Z               "line": 289
2026-06-22T01:34:20.3109458Z             },
2026-06-22T01:34:20.3109535Z             {
2026-06-22T01:34:20.3109652Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T01:34:20.3109765Z               "line": 230
2026-06-22T01:34:20.3109852Z             },
2026-06-22T01:34:20.3110140Z             {
2026-06-22T01:34:20.3110260Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.3110450Z               "line": 526
2026-06-22T01:34:20.3110527Z             },
2026-06-22T01:34:20.3110603Z             {
2026-06-22T01:34:20.3110716Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.3110809Z               "line": 556
2026-06-22T01:34:20.3110885Z             }
2026-06-22T01:34:20.3110970Z           ]
2026-06-22T01:34:20.3111046Z         }
2026-06-22T01:34:20.3111133Z       }
2026-06-22T01:34:20.3111223Z     },
2026-06-22T01:34:20.3111304Z     {
2026-06-22T01:34:20.3111434Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-22T01:34:20.3113127Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-22T01:34:20.3113231Z       "requiredStages": [
2026-06-22T01:34:20.3113317Z         "doc",
2026-06-22T01:34:20.3113408Z         "impl",
2026-06-22T01:34:20.3113485Z         "unit"
2026-06-22T01:34:20.3113574Z       ],
2026-06-22T01:34:20.3113657Z       "stages": {
2026-06-22T01:34:20.3113742Z         "doc": {
2026-06-22T01:34:20.3113838Z           "complete": true,
2026-06-22T01:34:20.3113928Z           "evidence": [
2026-06-22T01:34:20.3114019Z             {
2026-06-22T01:34:20.3114128Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3114223Z               "line": 314
2026-06-22T01:34:20.3114306Z             }
2026-06-22T01:34:20.3114400Z           ]
2026-06-22T01:34:20.3114481Z         },
2026-06-22T01:34:20.3114586Z         "impl": {
2026-06-22T01:34:20.3114692Z           "complete": true,
2026-06-22T01:34:20.3114771Z           "evidence": [
2026-06-22T01:34:20.3114882Z             {
2026-06-22T01:34:20.3115025Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T01:34:20.3115110Z               "line": 33
2026-06-22T01:34:20.3115190Z             },
2026-06-22T01:34:20.3115276Z             {
2026-06-22T01:34:20.3115429Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T01:34:20.3115524Z               "line": 39
2026-06-22T01:34:20.3115615Z             }
2026-06-22T01:34:20.3115701Z           ]
2026-06-22T01:34:20.3115781Z         },
2026-06-22T01:34:20.3115872Z         "int": {
2026-06-22T01:34:20.3115973Z           "complete": false,
2026-06-22T01:34:20.3116059Z           "evidence": []
2026-06-22T01:34:20.3116148Z         },
2026-06-22T01:34:20.3116231Z         "unit": {
2026-06-22T01:34:20.3116321Z           "complete": true,
2026-06-22T01:34:20.3116416Z           "evidence": [
2026-06-22T01:34:20.3116501Z             {
2026-06-22T01:34:20.3116659Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T01:34:20.3116773Z               "line": 95
2026-06-22T01:34:20.3116860Z             }
2026-06-22T01:34:20.3116951Z           ]
2026-06-22T01:34:20.3117035Z         }
2026-06-22T01:34:20.3117127Z       }
2026-06-22T01:34:20.3117209Z     },
2026-06-22T01:34:20.3117303Z     {
2026-06-22T01:34:20.3117421Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-22T01:34:20.3119902Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-22T01:34:20.3120198Z       "requiredStages": [
2026-06-22T01:34:20.3120288Z         "impl",
2026-06-22T01:34:20.3120374Z         "unit"
2026-06-22T01:34:20.3120450Z       ],
2026-06-22T01:34:20.3120533Z       "stages": {
2026-06-22T01:34:20.3120614Z         "doc": {
2026-06-22T01:34:20.3120705Z           "complete": false,
2026-06-22T01:34:20.3120801Z           "evidence": []
2026-06-22T01:34:20.3120886Z         },
2026-06-22T01:34:20.3120972Z         "impl": {
2026-06-22T01:34:20.3121073Z           "complete": true,
2026-06-22T01:34:20.3121149Z           "evidence": [
2026-06-22T01:34:20.3121239Z             {
2026-06-22T01:34:20.3121369Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3121488Z               "line": 488
2026-06-22T01:34:20.3121578Z             }
2026-06-22T01:34:20.3121664Z           ]
2026-06-22T01:34:20.3121745Z         },
2026-06-22T01:34:20.3121831Z         "int": {
2026-06-22T01:34:20.3121935Z           "complete": false,
2026-06-22T01:34:20.3122023Z           "evidence": []
2026-06-22T01:34:20.3122112Z         },
2026-06-22T01:34:20.3122198Z         "unit": {
2026-06-22T01:34:20.3122289Z           "complete": true,
2026-06-22T01:34:20.3122380Z           "evidence": [
2026-06-22T01:34:20.3122464Z             {
2026-06-22T01:34:20.3122599Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3122685Z               "line": 1466
2026-06-22T01:34:20.3122765Z             }
2026-06-22T01:34:20.3122845Z           ]
2026-06-22T01:34:20.3122935Z         }
2026-06-22T01:34:20.3123016Z       }
2026-06-22T01:34:20.3123105Z     },
2026-06-22T01:34:20.3123195Z     {
2026-06-22T01:34:20.3123296Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-22T01:34:20.3125471Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-22T01:34:20.3125585Z       "requiredStages": [
2026-06-22T01:34:20.3125675Z         "unit"
2026-06-22T01:34:20.3125750Z       ],
2026-06-22T01:34:20.3125846Z       "stages": {
2026-06-22T01:34:20.3125952Z         "doc": {
2026-06-22T01:34:20.3126055Z           "complete": false,
2026-06-22T01:34:20.3126142Z           "evidence": []
2026-06-22T01:34:20.3126242Z         },
2026-06-22T01:34:20.3126327Z         "impl": {
2026-06-22T01:34:20.3126418Z           "complete": true,
2026-06-22T01:34:20.3126514Z           "evidence": [
2026-06-22T01:34:20.3126605Z             {
2026-06-22T01:34:20.3126713Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3126810Z               "line": 3520
2026-06-22T01:34:20.3126904Z             },
2026-06-22T01:34:20.3126995Z             {
2026-06-22T01:34:20.3127101Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3127196Z               "line": 3572
2026-06-22T01:34:20.3127272Z             },
2026-06-22T01:34:20.3127352Z             {
2026-06-22T01:34:20.3127458Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3127548Z               "line": 3617
2026-06-22T01:34:20.3127629Z             },
2026-06-22T01:34:20.3127797Z             {
2026-06-22T01:34:20.3127919Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3128076Z               "line": 92
2026-06-22T01:34:20.3128162Z             },
2026-06-22T01:34:20.3128245Z             {
2026-06-22T01:34:20.3128360Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3128442Z               "line": 148
2026-06-22T01:34:20.3128523Z             },
2026-06-22T01:34:20.3128608Z             {
2026-06-22T01:34:20.3128713Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3128808Z               "line": 192
2026-06-22T01:34:20.3128894Z             },
2026-06-22T01:34:20.3129081Z             {
2026-06-22T01:34:20.3129190Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3129275Z               "line": 200
2026-06-22T01:34:20.3129367Z             },
2026-06-22T01:34:20.3129447Z             {
2026-06-22T01:34:20.3129556Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3129653Z               "line": 211
2026-06-22T01:34:20.3129744Z             },
2026-06-22T01:34:20.3129820Z             {
2026-06-22T01:34:20.3129929Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3130021Z               "line": 265
2026-06-22T01:34:20.3130105Z             },
2026-06-22T01:34:20.3130191Z             {
2026-06-22T01:34:20.3130302Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3130388Z               "line": 279
2026-06-22T01:34:20.3130467Z             }
2026-06-22T01:34:20.3130549Z           ]
2026-06-22T01:34:20.3130641Z         },
2026-06-22T01:34:20.3130726Z         "int": {
2026-06-22T01:34:20.3130829Z           "complete": false,
2026-06-22T01:34:20.3130920Z           "evidence": []
2026-06-22T01:34:20.3131010Z         },
2026-06-22T01:34:20.3131103Z         "unit": {
2026-06-22T01:34:20.3131184Z           "complete": true,
2026-06-22T01:34:20.3131285Z           "evidence": [
2026-06-22T01:34:20.3131366Z             {
2026-06-22T01:34:20.3131489Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3131566Z               "line": 419
2026-06-22T01:34:20.3131657Z             },
2026-06-22T01:34:20.3131742Z             {
2026-06-22T01:34:20.3131856Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3131948Z               "line": 470
2026-06-22T01:34:20.3132029Z             },
2026-06-22T01:34:20.3132114Z             {
2026-06-22T01:34:20.3132224Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3132310Z               "line": 499
2026-06-22T01:34:20.3132405Z             },
2026-06-22T01:34:20.3132481Z             {
2026-06-22T01:34:20.3132592Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3132681Z               "line": 526
2026-06-22T01:34:20.3132767Z             }
2026-06-22T01:34:20.3132854Z           ]
2026-06-22T01:34:20.3132930Z         }
2026-06-22T01:34:20.3133015Z       }
2026-06-22T01:34:20.3133101Z     },
2026-06-22T01:34:20.3133188Z     {
2026-06-22T01:34:20.3133297Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-22T01:34:20.3133495Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-22T01:34:20.3133590Z       "requiredStages": [
2026-06-22T01:34:20.3133689Z         "impl",
2026-06-22T01:34:20.3133774Z         "unit"
2026-06-22T01:34:20.3133861Z       ],
2026-06-22T01:34:20.3133952Z       "stages": {
2026-06-22T01:34:20.3134027Z         "doc": {
2026-06-22T01:34:20.3134128Z           "complete": false,
2026-06-22T01:34:20.3134214Z           "evidence": []
2026-06-22T01:34:20.3134295Z         },
2026-06-22T01:34:20.3134389Z         "impl": {
2026-06-22T01:34:20.3134487Z           "complete": true,
2026-06-22T01:34:20.3134586Z           "evidence": [
2026-06-22T01:34:20.3134666Z             {
2026-06-22T01:34:20.3134801Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3134881Z               "line": 62
2026-06-22T01:34:20.3134967Z             },
2026-06-22T01:34:20.3135053Z             {
2026-06-22T01:34:20.3135282Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3135487Z               "line": 71
2026-06-22T01:34:20.3135572Z             },
2026-06-22T01:34:20.3135659Z             {
2026-06-22T01:34:20.3135779Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3135877Z               "line": 80
2026-06-22T01:34:20.3135969Z             },
2026-06-22T01:34:20.3136055Z             {
2026-06-22T01:34:20.3136183Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3136268Z               "line": 88
2026-06-22T01:34:20.3136353Z             },
2026-06-22T01:34:20.3136425Z             {
2026-06-22T01:34:20.3136549Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3136639Z               "line": 33
2026-06-22T01:34:20.3136716Z             },
2026-06-22T01:34:20.3136802Z             {
2026-06-22T01:34:20.3136911Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3137017Z               "line": 65
2026-06-22T01:34:20.3137107Z             },
2026-06-22T01:34:20.3137193Z             {
2026-06-22T01:34:20.3137303Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3137394Z               "line": 74
2026-06-22T01:34:20.3137483Z             },
2026-06-22T01:34:20.3137564Z             {
2026-06-22T01:34:20.3137680Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3137770Z               "line": 93
2026-06-22T01:34:20.3137846Z             },
2026-06-22T01:34:20.3137937Z             {
2026-06-22T01:34:20.3138047Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3138132Z               "line": 102
2026-06-22T01:34:20.3138222Z             },
2026-06-22T01:34:20.3138300Z             {
2026-06-22T01:34:20.3138409Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3138503Z               "line": 111
2026-06-22T01:34:20.3138598Z             },
2026-06-22T01:34:20.3138684Z             {
2026-06-22T01:34:20.3138801Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3138882Z               "line": 122
2026-06-22T01:34:20.3139055Z             },
2026-06-22T01:34:20.3139153Z             {
2026-06-22T01:34:20.3139264Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3139350Z               "line": 140
2026-06-22T01:34:20.3139431Z             },
2026-06-22T01:34:20.3139516Z             {
2026-06-22T01:34:20.3139627Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3139712Z               "line": 149
2026-06-22T01:34:20.3139792Z             },
2026-06-22T01:34:20.3139874Z             {
2026-06-22T01:34:20.3139994Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3140065Z               "line": 158
2026-06-22T01:34:20.3140150Z             },
2026-06-22T01:34:20.3140232Z             {
2026-06-22T01:34:20.3140341Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3140446Z               "line": 169
2026-06-22T01:34:20.3140528Z             },
2026-06-22T01:34:20.3140619Z             {
2026-06-22T01:34:20.3140728Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3140823Z               "line": 177
2026-06-22T01:34:20.3140905Z             },
2026-06-22T01:34:20.3140990Z             {
2026-06-22T01:34:20.3141104Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3141196Z               "line": 186
2026-06-22T01:34:20.3141277Z             },
2026-06-22T01:34:20.3141351Z             {
2026-06-22T01:34:20.3141460Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3141552Z               "line": 195
2026-06-22T01:34:20.3141640Z             },
2026-06-22T01:34:20.3141730Z             {
2026-06-22T01:34:20.3144597Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3144722Z               "line": 204
2026-06-22T01:34:20.3144807Z             },
2026-06-22T01:34:20.3144897Z             {
2026-06-22T01:34:20.3145156Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3145245Z               "line": 216
2026-06-22T01:34:20.3145427Z             },
2026-06-22T01:34:20.3145513Z             {
2026-06-22T01:34:20.3145642Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3145728Z               "line": 223
2026-06-22T01:34:20.3145804Z             },
2026-06-22T01:34:20.3145894Z             {
2026-06-22T01:34:20.3146005Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3146099Z               "line": 232
2026-06-22T01:34:20.3146180Z             },
2026-06-22T01:34:20.3146267Z             {
2026-06-22T01:34:20.3146372Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3146461Z               "line": 239
2026-06-22T01:34:20.3146548Z             },
2026-06-22T01:34:20.3146630Z             {
2026-06-22T01:34:20.3146743Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3146833Z               "line": 306
2026-06-22T01:34:20.3146928Z             },
2026-06-22T01:34:20.3147010Z             {
2026-06-22T01:34:20.3147133Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3147223Z               "line": 318
2026-06-22T01:34:20.3147305Z             },
2026-06-22T01:34:20.3147391Z             {
2026-06-22T01:34:20.3147495Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3147582Z               "line": 405
2026-06-22T01:34:20.3147658Z             }
2026-06-22T01:34:20.3147748Z           ]
2026-06-22T01:34:20.3147829Z         },
2026-06-22T01:34:20.3147911Z         "int": {
2026-06-22T01:34:20.3148001Z           "complete": false,
2026-06-22T01:34:20.3148091Z           "evidence": []
2026-06-22T01:34:20.3148172Z         },
2026-06-22T01:34:20.3148259Z         "unit": {
2026-06-22T01:34:20.3148359Z           "complete": true,
2026-06-22T01:34:20.3148440Z           "evidence": [
2026-06-22T01:34:20.3148521Z             {
2026-06-22T01:34:20.3148626Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3148711Z               "line": 487
2026-06-22T01:34:20.3148802Z             },
2026-06-22T01:34:20.3148885Z             {
2026-06-22T01:34:20.3149087Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3149173Z               "line": 528
2026-06-22T01:34:20.3149254Z             },
2026-06-22T01:34:20.3149333Z             {
2026-06-22T01:34:20.3149437Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3149528Z               "line": 541
2026-06-22T01:34:20.3149610Z             },
2026-06-22T01:34:20.3149695Z             {
2026-06-22T01:34:20.3149814Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3149891Z               "line": 627
2026-06-22T01:34:20.3149976Z             }
2026-06-22T01:34:20.3150066Z           ]
2026-06-22T01:34:20.3150144Z         }
2026-06-22T01:34:20.3150220Z       }
2026-06-22T01:34:20.3150305Z     },
2026-06-22T01:34:20.3150390Z     {
2026-06-22T01:34:20.3150506Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-22T01:34:20.3150715Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-22T01:34:20.3150840Z       "requiredStages": [
2026-06-22T01:34:20.3150930Z         "impl",
2026-06-22T01:34:20.3151011Z         "unit"
2026-06-22T01:34:20.3151098Z       ],
2026-06-22T01:34:20.3151188Z       "stages": {
2026-06-22T01:34:20.3151273Z         "doc": {
2026-06-22T01:34:20.3151374Z           "complete": false,
2026-06-22T01:34:20.3151460Z           "evidence": []
2026-06-22T01:34:20.3151550Z         },
2026-06-22T01:34:20.3151631Z         "impl": {
2026-06-22T01:34:20.3151718Z           "complete": true,
2026-06-22T01:34:20.3151809Z           "evidence": [
2026-06-22T01:34:20.3151893Z             {
2026-06-22T01:34:20.3152011Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.3152102Z               "line": 175
2026-06-22T01:34:20.3152186Z             },
2026-06-22T01:34:20.3152271Z             {
2026-06-22T01:34:20.3152506Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.3152590Z               "line": 171
2026-06-22T01:34:20.3152763Z             }
2026-06-22T01:34:20.3152844Z           ]
2026-06-22T01:34:20.3152929Z         },
2026-06-22T01:34:20.3153016Z         "int": {
2026-06-22T01:34:20.3153106Z           "complete": false,
2026-06-22T01:34:20.3153192Z           "evidence": []
2026-06-22T01:34:20.3153272Z         },
2026-06-22T01:34:20.3153345Z         "unit": {
2026-06-22T01:34:20.3153445Z           "complete": true,
2026-06-22T01:34:20.3153540Z           "evidence": [
2026-06-22T01:34:20.3153621Z             {
2026-06-22T01:34:20.3153726Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.3153820Z               "line": 297
2026-06-22T01:34:20.3153902Z             },
2026-06-22T01:34:20.3153984Z             {
2026-06-22T01:34:20.3154112Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.3154193Z               "line": 836
2026-06-22T01:34:20.3154280Z             },
2026-06-22T01:34:20.3154366Z             {
2026-06-22T01:34:20.3154483Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.3154572Z               "line": 849
2026-06-22T01:34:20.3154659Z             }
2026-06-22T01:34:20.3154744Z           ]
2026-06-22T01:34:20.3154828Z         }
2026-06-22T01:34:20.3154914Z       }
2026-06-22T01:34:20.3154996Z     },
2026-06-22T01:34:20.3155082Z     {
2026-06-22T01:34:20.3155200Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-22T01:34:20.3155339Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-22T01:34:20.3155434Z       "requiredStages": [
2026-06-22T01:34:20.3155520Z         "impl",
2026-06-22T01:34:20.3155607Z         "unit"
2026-06-22T01:34:20.3155687Z       ],
2026-06-22T01:34:20.3155772Z       "stages": {
2026-06-22T01:34:20.3155863Z         "doc": {
2026-06-22T01:34:20.3155950Z           "complete": false,
2026-06-22T01:34:20.3156035Z           "evidence": []
2026-06-22T01:34:20.3156120Z         },
2026-06-22T01:34:20.3156207Z         "impl": {
2026-06-22T01:34:20.3156293Z           "complete": true,
2026-06-22T01:34:20.3156393Z           "evidence": [
2026-06-22T01:34:20.3156478Z             {
2026-06-22T01:34:20.3156599Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3156692Z               "line": 116
2026-06-22T01:34:20.3156769Z             },
2026-06-22T01:34:20.3156842Z             {
2026-06-22T01:34:20.3156974Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3157060Z               "line": 507
2026-06-22T01:34:20.3157147Z             }
2026-06-22T01:34:20.3157233Z           ]
2026-06-22T01:34:20.3157307Z         },
2026-06-22T01:34:20.3157398Z         "int": {
2026-06-22T01:34:20.3157493Z           "complete": false,
2026-06-22T01:34:20.3157570Z           "evidence": []
2026-06-22T01:34:20.3157650Z         },
2026-06-22T01:34:20.3157741Z         "unit": {
2026-06-22T01:34:20.3157827Z           "complete": true,
2026-06-22T01:34:20.3157922Z           "evidence": [
2026-06-22T01:34:20.3157998Z             {
2026-06-22T01:34:20.3158132Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3158218Z               "line": 541
2026-06-22T01:34:20.3158304Z             }
2026-06-22T01:34:20.3158389Z           ]
2026-06-22T01:34:20.3158476Z         }
2026-06-22T01:34:20.3158561Z       }
2026-06-22T01:34:20.3158633Z     },
2026-06-22T01:34:20.3158722Z     {
2026-06-22T01:34:20.3158838Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-22T01:34:20.3159096Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-22T01:34:20.3159196Z       "requiredStages": [
2026-06-22T01:34:20.3159281Z         "impl",
2026-06-22T01:34:20.3159367Z         "unit"
2026-06-22T01:34:20.3159440Z       ],
2026-06-22T01:34:20.3159529Z       "stages": {
2026-06-22T01:34:20.3159614Z         "doc": {
2026-06-22T01:34:20.3159709Z           "complete": false,
2026-06-22T01:34:20.3159804Z           "evidence": []
2026-06-22T01:34:20.3159987Z         },
2026-06-22T01:34:20.3160079Z         "impl": {
2026-06-22T01:34:20.3160246Z           "complete": true,
2026-06-22T01:34:20.3160331Z           "evidence": [
2026-06-22T01:34:20.3160408Z             {
2026-06-22T01:34:20.3160532Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3160622Z               "line": 552
2026-06-22T01:34:20.3160704Z             },
2026-06-22T01:34:20.3160794Z             {
2026-06-22T01:34:20.3160908Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:34:20.3160999Z               "line": 28
2026-06-22T01:34:20.3161076Z             }
2026-06-22T01:34:20.3161156Z           ]
2026-06-22T01:34:20.3161237Z         },
2026-06-22T01:34:20.3161319Z         "int": {
2026-06-22T01:34:20.3161414Z           "complete": false,
2026-06-22T01:34:20.3161495Z           "evidence": []
2026-06-22T01:34:20.3161580Z         },
2026-06-22T01:34:20.3161668Z         "unit": {
2026-06-22T01:34:20.3161767Z           "complete": true,
2026-06-22T01:34:20.3161853Z           "evidence": [
2026-06-22T01:34:20.3161934Z             {
2026-06-22T01:34:20.3162049Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:34:20.3162134Z               "line": 229
2026-06-22T01:34:20.3162215Z             }
2026-06-22T01:34:20.3162297Z           ]
2026-06-22T01:34:20.3162373Z         }
2026-06-22T01:34:20.3162458Z       }
2026-06-22T01:34:20.3162542Z     },
2026-06-22T01:34:20.3162624Z     {
2026-06-22T01:34:20.3162732Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-22T01:34:20.3162864Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-22T01:34:20.3162951Z       "requiredStages": [],
2026-06-22T01:34:20.3163032Z       "stages": {
2026-06-22T01:34:20.3163123Z         "doc": {
2026-06-22T01:34:20.3163213Z           "complete": false,
2026-06-22T01:34:20.3163304Z           "evidence": []
2026-06-22T01:34:20.3163390Z         },
2026-06-22T01:34:20.3163470Z         "impl": {
2026-06-22T01:34:20.3163556Z           "complete": false,
2026-06-22T01:34:20.3163652Z           "evidence": []
2026-06-22T01:34:20.3163738Z         },
2026-06-22T01:34:20.3163827Z         "int": {
2026-06-22T01:34:20.3163915Z           "complete": false,
2026-06-22T01:34:20.3164000Z           "evidence": []
2026-06-22T01:34:20.3164081Z         },
2026-06-22T01:34:20.3164162Z         "unit": {
2026-06-22T01:34:20.3164253Z           "complete": false,
2026-06-22T01:34:20.3164343Z           "evidence": []
2026-06-22T01:34:20.3164424Z         }
2026-06-22T01:34:20.3164510Z       }
2026-06-22T01:34:20.3164597Z     },
2026-06-22T01:34:20.3164681Z     {
2026-06-22T01:34:20.3164801Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-22T01:34:20.3164945Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-22T01:34:20.3165033Z       "requiredStages": [
2026-06-22T01:34:20.3165119Z         "impl",
2026-06-22T01:34:20.3165205Z         "unit"
2026-06-22T01:34:20.3165290Z       ],
2026-06-22T01:34:20.3165384Z       "stages": {
2026-06-22T01:34:20.3165469Z         "doc": {
2026-06-22T01:34:20.3165566Z           "complete": false,
2026-06-22T01:34:20.3165652Z           "evidence": []
2026-06-22T01:34:20.3165736Z         },
2026-06-22T01:34:20.3165823Z         "impl": {
2026-06-22T01:34:20.3165913Z           "complete": true,
2026-06-22T01:34:20.3166167Z           "evidence": [
2026-06-22T01:34:20.3166385Z             {
2026-06-22T01:34:20.3166534Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:34:20.3166643Z               "line": 19
2026-06-22T01:34:20.3166742Z             },
2026-06-22T01:34:20.3166867Z             {
2026-06-22T01:34:20.3167043Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3167168Z               "line": 463
2026-06-22T01:34:20.3167282Z             },
2026-06-22T01:34:20.3167397Z             {
2026-06-22T01:34:20.3167558Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3167683Z               "line": 499
2026-06-22T01:34:20.3167995Z             },
2026-06-22T01:34:20.3168111Z             {
2026-06-22T01:34:20.3168277Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3168497Z               "line": 547
2026-06-22T01:34:20.3168615Z             },
2026-06-22T01:34:20.3168722Z             {
2026-06-22T01:34:20.3168887Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:34:20.3169116Z               "line": 15
2026-06-22T01:34:20.3169230Z             },
2026-06-22T01:34:20.3169346Z             {
2026-06-22T01:34:20.3169503Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:34:20.3169627Z               "line": 48
2026-06-22T01:34:20.3169737Z             },
2026-06-22T01:34:20.3169846Z             {
2026-06-22T01:34:20.3170000Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:34:20.3170112Z               "line": 119
2026-06-22T01:34:20.3170226Z             },
2026-06-22T01:34:20.3170336Z             {
2026-06-22T01:34:20.3170477Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3170605Z               "line": 3948
2026-06-22T01:34:20.3170721Z             }
2026-06-22T01:34:20.3170848Z           ]
2026-06-22T01:34:20.3170954Z         },
2026-06-22T01:34:20.3171078Z         "int": {
2026-06-22T01:34:20.3171205Z           "complete": false,
2026-06-22T01:34:20.3171331Z           "evidence": []
2026-06-22T01:34:20.3171449Z         },
2026-06-22T01:34:20.3171564Z         "unit": {
2026-06-22T01:34:20.3171693Z           "complete": true,
2026-06-22T01:34:20.3171797Z           "evidence": [
2026-06-22T01:34:20.3171908Z             {
2026-06-22T01:34:20.3172069Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3172194Z               "line": 765
2026-06-22T01:34:20.3172303Z             },
2026-06-22T01:34:20.3172413Z             {
2026-06-22T01:34:20.3172571Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:34:20.3172694Z               "line": 165
2026-06-22T01:34:20.3172809Z             },
2026-06-22T01:34:20.3172938Z             {
2026-06-22T01:34:20.3173098Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:34:20.3173218Z               "line": 175
2026-06-22T01:34:20.3173325Z             }
2026-06-22T01:34:20.3173439Z           ]
2026-06-22T01:34:20.3173535Z         }
2026-06-22T01:34:20.3173645Z       }
2026-06-22T01:34:20.3173748Z     },
2026-06-22T01:34:20.3173864Z     {
2026-06-22T01:34:20.3174026Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-22T01:34:20.3175405Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-22T01:34:20.3175547Z       "requiredStages": [
2026-06-22T01:34:20.3175660Z         "impl",
2026-06-22T01:34:20.3175779Z         "unit"
2026-06-22T01:34:20.3175897Z       ],
2026-06-22T01:34:20.3176024Z       "stages": {
2026-06-22T01:34:20.3176136Z         "doc": {
2026-06-22T01:34:20.3176268Z           "complete": false,
2026-06-22T01:34:20.3176407Z           "evidence": []
2026-06-22T01:34:20.3176517Z         },
2026-06-22T01:34:20.3176635Z         "impl": {
2026-06-22T01:34:20.3176765Z           "complete": true,
2026-06-22T01:34:20.3176884Z           "evidence": [
2026-06-22T01:34:20.3176998Z             {
2026-06-22T01:34:20.3177159Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3177274Z               "line": 192
2026-06-22T01:34:20.3177375Z             },
2026-06-22T01:34:20.3177489Z             {
2026-06-22T01:34:20.3177647Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3177761Z               "line": 279
2026-06-22T01:34:20.3177870Z             }
2026-06-22T01:34:20.3177977Z           ]
2026-06-22T01:34:20.3178090Z         },
2026-06-22T01:34:20.3178204Z         "int": {
2026-06-22T01:34:20.3178334Z           "complete": false,
2026-06-22T01:34:20.3178647Z           "evidence": []
2026-06-22T01:34:20.3178753Z         },
2026-06-22T01:34:20.3178866Z         "unit": {
2026-06-22T01:34:20.3179272Z           "complete": true,
2026-06-22T01:34:20.3179406Z           "evidence": [
2026-06-22T01:34:20.3179519Z             {
2026-06-22T01:34:20.3179686Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3179805Z               "line": 470
2026-06-22T01:34:20.3179911Z             },
2026-06-22T01:34:20.3180034Z             {
2026-06-22T01:34:20.3180177Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3180297Z               "line": 526
2026-06-22T01:34:20.3180401Z             }
2026-06-22T01:34:20.3180516Z           ]
2026-06-22T01:34:20.3180649Z         }
2026-06-22T01:34:20.3180753Z       }
2026-06-22T01:34:20.3180867Z     },
2026-06-22T01:34:20.3180980Z     {
2026-06-22T01:34:20.3181141Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-22T01:34:20.3186847Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-22T01:34:20.3187053Z       "requiredStages": [
2026-06-22T01:34:20.3187166Z         "impl",
2026-06-22T01:34:20.3187287Z         "unit",
2026-06-22T01:34:20.3187396Z         "int"
2026-06-22T01:34:20.3187514Z       ],
2026-06-22T01:34:20.3187635Z       "stages": {
2026-06-22T01:34:20.3187739Z         "doc": {
2026-06-22T01:34:20.3187873Z           "complete": false,
2026-06-22T01:34:20.3187997Z           "evidence": []
2026-06-22T01:34:20.3188120Z         },
2026-06-22T01:34:20.3188227Z         "impl": {
2026-06-22T01:34:20.3188354Z           "complete": true,
2026-06-22T01:34:20.3188478Z           "evidence": [
2026-06-22T01:34:20.3188594Z             {
2026-06-22T01:34:20.3188773Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.3188913Z               "line": 116
2026-06-22T01:34:20.3189111Z             },
2026-06-22T01:34:20.3189216Z             {
2026-06-22T01:34:20.3189411Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.3189541Z               "line": 132
2026-06-22T01:34:20.3189646Z             },
2026-06-22T01:34:20.3189755Z             {
2026-06-22T01:34:20.3189927Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.3190040Z               "line": 434
2026-06-22T01:34:20.3190147Z             },
2026-06-22T01:34:20.3190260Z             {
2026-06-22T01:34:20.3190422Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3190533Z               "line": 139
2026-06-22T01:34:20.3190647Z             },
2026-06-22T01:34:20.3190752Z             {
2026-06-22T01:34:20.3190918Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3191043Z               "line": 326
2026-06-22T01:34:20.3191158Z             },
2026-06-22T01:34:20.3191432Z             {
2026-06-22T01:34:20.3191587Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3191831Z               "line": 555
2026-06-22T01:34:20.3191940Z             }
2026-06-22T01:34:20.3192064Z           ]
2026-06-22T01:34:20.3192179Z         },
2026-06-22T01:34:20.3192288Z         "int": {
2026-06-22T01:34:20.3192418Z           "complete": true,
2026-06-22T01:34:20.3192541Z           "evidence": [
2026-06-22T01:34:20.3192646Z             {
2026-06-22T01:34:20.3192847Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T01:34:20.3192970Z               "line": 32
2026-06-22T01:34:20.3193076Z             }
2026-06-22T01:34:20.3193195Z           ]
2026-06-22T01:34:20.3193304Z         },
2026-06-22T01:34:20.3193410Z         "unit": {
2026-06-22T01:34:20.3193538Z           "complete": true,
2026-06-22T01:34:20.3193653Z           "evidence": [
2026-06-22T01:34:20.3193767Z             {
2026-06-22T01:34:20.3193919Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3194058Z               "line": 625
2026-06-22T01:34:20.3194166Z             },
2026-06-22T01:34:20.3194281Z             {
2026-06-22T01:34:20.3194440Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3194559Z               "line": 646
2026-06-22T01:34:20.3194670Z             },
2026-06-22T01:34:20.3194779Z             {
2026-06-22T01:34:20.3194941Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3195066Z               "line": 662
2026-06-22T01:34:20.3195174Z             },
2026-06-22T01:34:20.3195281Z             {
2026-06-22T01:34:20.3195437Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3195561Z               "line": 680
2026-06-22T01:34:20.3195661Z             },
2026-06-22T01:34:20.3195775Z             {
2026-06-22T01:34:20.3195948Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3196056Z               "line": 704
2026-06-22T01:34:20.3196152Z             }
2026-06-22T01:34:20.3196234Z           ]
2026-06-22T01:34:20.3196324Z         }
2026-06-22T01:34:20.3196404Z       }
2026-06-22T01:34:20.3196520Z     },
2026-06-22T01:34:20.3196634Z     {
2026-06-22T01:34:20.3196789Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-22T01:34:20.3197012Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-22T01:34:20.3197135Z       "requiredStages": [
2026-06-22T01:34:20.3197241Z         "impl",
2026-06-22T01:34:20.3197360Z         "unit"
2026-06-22T01:34:20.3197474Z       ],
2026-06-22T01:34:20.3197585Z       "stages": {
2026-06-22T01:34:20.3197684Z         "doc": {
2026-06-22T01:34:20.3197803Z           "complete": false,
2026-06-22T01:34:20.3197923Z           "evidence": []
2026-06-22T01:34:20.3198037Z         },
2026-06-22T01:34:20.3198148Z         "impl": {
2026-06-22T01:34:20.3198276Z           "complete": true,
2026-06-22T01:34:20.3198399Z           "evidence": [
2026-06-22T01:34:20.3198515Z             {
2026-06-22T01:34:20.3198681Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.3198792Z               "line": 35
2026-06-22T01:34:20.3198919Z             }
2026-06-22T01:34:20.3199130Z           ]
2026-06-22T01:34:20.3199248Z         },
2026-06-22T01:34:20.3199368Z         "int": {
2026-06-22T01:34:20.3199492Z           "complete": false,
2026-06-22T01:34:20.3199623Z           "evidence": []
2026-06-22T01:34:20.3199728Z         },
2026-06-22T01:34:20.3199849Z         "unit": {
2026-06-22T01:34:20.3199966Z           "complete": true,
2026-06-22T01:34:20.3200091Z           "evidence": [
2026-06-22T01:34:20.3200211Z             {
2026-06-22T01:34:20.3200368Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:34:20.3200492Z               "line": 220
2026-06-22T01:34:20.3200596Z             }
2026-06-22T01:34:20.3200707Z           ]
2026-06-22T01:34:20.3200816Z         }
2026-06-22T01:34:20.3200925Z       }
2026-06-22T01:34:20.3201031Z     },
2026-06-22T01:34:20.3201145Z     {
2026-06-22T01:34:20.3201455Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-22T01:34:20.3206321Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-22T01:34:20.3206751Z       "requiredStages": [
2026-06-22T01:34:20.3206870Z         "impl",
2026-06-22T01:34:20.3206989Z         "unit",
2026-06-22T01:34:20.3207099Z         "int"
2026-06-22T01:34:20.3207218Z       ],
2026-06-22T01:34:20.3207331Z       "stages": {
2026-06-22T01:34:20.3207446Z         "doc": {
2026-06-22T01:34:20.3207572Z           "complete": false,
2026-06-22T01:34:20.3207700Z           "evidence": []
2026-06-22T01:34:20.3207816Z         },
2026-06-22T01:34:20.3207925Z         "impl": {
2026-06-22T01:34:20.3208053Z           "complete": true,
2026-06-22T01:34:20.3208168Z           "evidence": [
2026-06-22T01:34:20.3208287Z             {
2026-06-22T01:34:20.3208459Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3208587Z               "line": 202
2026-06-22T01:34:20.3208708Z             },
2026-06-22T01:34:20.3208836Z             {
2026-06-22T01:34:20.3209070Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:34:20.3209198Z               "line": 107
2026-06-22T01:34:20.3209308Z             },
2026-06-22T01:34:20.3209422Z             {
2026-06-22T01:34:20.3209579Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:34:20.3209704Z               "line": 138
2026-06-22T01:34:20.3209817Z             },
2026-06-22T01:34:20.3209933Z             {
2026-06-22T01:34:20.3210099Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3210221Z               "line": 209
2026-06-22T01:34:20.3210323Z             },
2026-06-22T01:34:20.3210442Z             {
2026-06-22T01:34:20.3210613Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3210733Z               "line": 246
2026-06-22T01:34:20.3210842Z             },
2026-06-22T01:34:20.3210957Z             {
2026-06-22T01:34:20.3211119Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3211247Z               "line": 379
2026-06-22T01:34:20.3211367Z             }
2026-06-22T01:34:20.3211481Z           ]
2026-06-22T01:34:20.3211592Z         },
2026-06-22T01:34:20.3211719Z         "int": {
2026-06-22T01:34:20.3211843Z           "complete": true,
2026-06-22T01:34:20.3211963Z           "evidence": [
2026-06-22T01:34:20.3212071Z             {
2026-06-22T01:34:20.3212269Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-22T01:34:20.3212396Z               "line": 17
2026-06-22T01:34:20.3212504Z             }
2026-06-22T01:34:20.3212624Z           ]
2026-06-22T01:34:20.3212731Z         },
2026-06-22T01:34:20.3212856Z         "unit": {
2026-06-22T01:34:20.3212981Z           "complete": true,
2026-06-22T01:34:20.3213103Z           "evidence": [
2026-06-22T01:34:20.3213233Z             {
2026-06-22T01:34:20.3213394Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.3213519Z               "line": 982
2026-06-22T01:34:20.3213771Z             }
2026-06-22T01:34:20.3213886Z           ]
2026-06-22T01:34:20.3213995Z         }
2026-06-22T01:34:20.3214239Z       }
2026-06-22T01:34:20.3214343Z     },
2026-06-22T01:34:20.3214454Z     {
2026-06-22T01:34:20.3214600Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-22T01:34:20.3214978Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-22T01:34:20.3215088Z       "requiredStages": [
2026-06-22T01:34:20.3215198Z         "impl",
2026-06-22T01:34:20.3215315Z         "unit"
2026-06-22T01:34:20.3215420Z       ],
2026-06-22T01:34:20.3215529Z       "stages": {
2026-06-22T01:34:20.3215632Z         "doc": {
2026-06-22T01:34:20.3215761Z           "complete": false,
2026-06-22T01:34:20.3215890Z           "evidence": []
2026-06-22T01:34:20.3216105Z         },
2026-06-22T01:34:20.3216219Z         "impl": {
2026-06-22T01:34:20.3216347Z           "complete": true,
2026-06-22T01:34:20.3216453Z           "evidence": [
2026-06-22T01:34:20.3216548Z             {
2026-06-22T01:34:20.3216676Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.3216777Z               "line": 405
2026-06-22T01:34:20.3216877Z             },
2026-06-22T01:34:20.3217001Z             {
2026-06-22T01:34:20.3217172Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.3217287Z               "line": 409
2026-06-22T01:34:20.3217398Z             },
2026-06-22T01:34:20.3217510Z             {
2026-06-22T01:34:20.3217674Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.3217796Z               "line": 156
2026-06-22T01:34:20.3217905Z             }
2026-06-22T01:34:20.3218030Z           ]
2026-06-22T01:34:20.3218137Z         },
2026-06-22T01:34:20.3218255Z         "int": {
2026-06-22T01:34:20.3218371Z           "complete": false,
2026-06-22T01:34:20.3218494Z           "evidence": []
2026-06-22T01:34:20.3218604Z         },
2026-06-22T01:34:20.3218724Z         "unit": {
2026-06-22T01:34:20.3218857Z           "complete": true,
2026-06-22T01:34:20.3219048Z           "evidence": [
2026-06-22T01:34:20.3219181Z             {
2026-06-22T01:34:20.3219339Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.3219434Z               "line": 865
2026-06-22T01:34:20.3219519Z             },
2026-06-22T01:34:20.3219607Z             {
2026-06-22T01:34:20.3219715Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.3219801Z               "line": 879
2026-06-22T01:34:20.3219883Z             },
2026-06-22T01:34:20.3219964Z             {
2026-06-22T01:34:20.3220087Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.3220168Z               "line": 898
2026-06-22T01:34:20.3220251Z             },
2026-06-22T01:34:20.3220335Z             {
2026-06-22T01:34:20.3220445Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.3220531Z               "line": 915
2026-06-22T01:34:20.3220608Z             },
2026-06-22T01:34:20.3220711Z             {
2026-06-22T01:34:20.3220835Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:34:20.3220911Z               "line": 441
2026-06-22T01:34:20.3220997Z             }
2026-06-22T01:34:20.3221082Z           ]
2026-06-22T01:34:20.3221164Z         }
2026-06-22T01:34:20.3221241Z       }
2026-06-22T01:34:20.3221331Z     },
2026-06-22T01:34:20.3221416Z     {
2026-06-22T01:34:20.3221532Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-22T01:34:20.3231409Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-22T01:34:20.3231853Z       "requiredStages": [
2026-06-22T01:34:20.3231938Z         "doc",
2026-06-22T01:34:20.3232019Z         "impl",
2026-06-22T01:34:20.3232092Z         "unit",
2026-06-22T01:34:20.3232172Z         "int"
2026-06-22T01:34:20.3232253Z       ],
2026-06-22T01:34:20.3232334Z       "stages": {
2026-06-22T01:34:20.3232416Z         "doc": {
2026-06-22T01:34:20.3232497Z           "complete": true,
2026-06-22T01:34:20.3232606Z           "evidence": [
2026-06-22T01:34:20.3232687Z             {
2026-06-22T01:34:20.3232797Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3232873Z               "line": 420
2026-06-22T01:34:20.3232968Z             },
2026-06-22T01:34:20.3233046Z             {
2026-06-22T01:34:20.3233159Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3233240Z               "line": 402
2026-06-22T01:34:20.3233322Z             }
2026-06-22T01:34:20.3233398Z           ]
2026-06-22T01:34:20.3233478Z         },
2026-06-22T01:34:20.3233563Z         "impl": {
2026-06-22T01:34:20.3233658Z           "complete": true,
2026-06-22T01:34:20.3233739Z           "evidence": [
2026-06-22T01:34:20.3233828Z             {
2026-06-22T01:34:20.3233952Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3234038Z               "line": 797
2026-06-22T01:34:20.3234120Z             },
2026-06-22T01:34:20.3234204Z             {
2026-06-22T01:34:20.3234401Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3234491Z               "line": 822
2026-06-22T01:34:20.3234644Z             },
2026-06-22T01:34:20.3234730Z             {
2026-06-22T01:34:20.3234839Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3234920Z               "line": 839
2026-06-22T01:34:20.3235006Z             },
2026-06-22T01:34:20.3235082Z             {
2026-06-22T01:34:20.3235196Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3235279Z               "line": 854
2026-06-22T01:34:20.3235359Z             },
2026-06-22T01:34:20.3235444Z             {
2026-06-22T01:34:20.3235554Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3235646Z               "line": 874
2026-06-22T01:34:20.3235735Z             },
2026-06-22T01:34:20.3235816Z             {
2026-06-22T01:34:20.3235923Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3236007Z               "line": 964
2026-06-22T01:34:20.3236103Z             },
2026-06-22T01:34:20.3236184Z             {
2026-06-22T01:34:20.3236304Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3236397Z               "line": 1016
2026-06-22T01:34:20.3236478Z             },
2026-06-22T01:34:20.3236564Z             {
2026-06-22T01:34:20.3236677Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3236771Z               "line": 1075
2026-06-22T01:34:20.3236857Z             },
2026-06-22T01:34:20.3236944Z             {
2026-06-22T01:34:20.3237076Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.3237162Z               "line": 527
2026-06-22T01:34:20.3237249Z             }
2026-06-22T01:34:20.3237335Z           ]
2026-06-22T01:34:20.3237424Z         },
2026-06-22T01:34:20.3237507Z         "int": {
2026-06-22T01:34:20.3237602Z           "complete": true,
2026-06-22T01:34:20.3237696Z           "evidence": [
2026-06-22T01:34:20.3237778Z             {
2026-06-22T01:34:20.3237907Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:34:20.3237993Z               "line": 35
2026-06-22T01:34:20.3238088Z             },
2026-06-22T01:34:20.3238169Z             {
2026-06-22T01:34:20.3238292Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:34:20.3238383Z               "line": 569
2026-06-22T01:34:20.3238466Z             },
2026-06-22T01:34:20.3238556Z             {
2026-06-22T01:34:20.3238669Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:34:20.3238766Z               "line": 590
2026-06-22T01:34:20.3238851Z             }
2026-06-22T01:34:20.3238936Z           ]
2026-06-22T01:34:20.3239078Z         },
2026-06-22T01:34:20.3239164Z         "unit": {
2026-06-22T01:34:20.3239262Z           "complete": true,
2026-06-22T01:34:20.3239357Z           "evidence": [
2026-06-22T01:34:20.3242460Z             {
2026-06-22T01:34:20.3242609Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3242718Z               "line": 1202
2026-06-22T01:34:20.3242803Z             },
2026-06-22T01:34:20.3242889Z             {
2026-06-22T01:34:20.3243014Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3243095Z               "line": 1246
2026-06-22T01:34:20.3243175Z             },
2026-06-22T01:34:20.3243262Z             {
2026-06-22T01:34:20.3243385Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3243476Z               "line": 1260
2026-06-22T01:34:20.3243553Z             },
2026-06-22T01:34:20.3243639Z             {
2026-06-22T01:34:20.3243743Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3243834Z               "line": 1278
2026-06-22T01:34:20.3243911Z             },
2026-06-22T01:34:20.3243991Z             {
2026-06-22T01:34:20.3244105Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3244195Z               "line": 1302
2026-06-22T01:34:20.3244281Z             },
2026-06-22T01:34:20.3244492Z             {
2026-06-22T01:34:20.3244603Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3244783Z               "line": 1529
2026-06-22T01:34:20.3244865Z             }
2026-06-22T01:34:20.3244952Z           ]
2026-06-22T01:34:20.3245032Z         }
2026-06-22T01:34:20.3245117Z       }
2026-06-22T01:34:20.3245195Z     },
2026-06-22T01:34:20.3245280Z     {
2026-06-22T01:34:20.3245389Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-22T01:34:20.3247552Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-22T01:34:20.3247665Z       "requiredStages": [
2026-06-22T01:34:20.3247757Z         "unit",
2026-06-22T01:34:20.3247842Z         "int"
2026-06-22T01:34:20.3247927Z       ],
2026-06-22T01:34:20.3248013Z       "stages": {
2026-06-22T01:34:20.3248090Z         "doc": {
2026-06-22T01:34:20.3248176Z           "complete": true,
2026-06-22T01:34:20.3248266Z           "evidence": [
2026-06-22T01:34:20.3248347Z             {
2026-06-22T01:34:20.3248453Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3248538Z               "line": 381
2026-06-22T01:34:20.3248614Z             }
2026-06-22T01:34:20.3248696Z           ]
2026-06-22T01:34:20.3248777Z         },
2026-06-22T01:34:20.3248866Z         "impl": {
2026-06-22T01:34:20.3249031Z           "complete": true,
2026-06-22T01:34:20.3249134Z           "evidence": [
2026-06-22T01:34:20.3249220Z             {
2026-06-22T01:34:20.3249326Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3249416Z               "line": 143
2026-06-22T01:34:20.3249501Z             }
2026-06-22T01:34:20.3249590Z           ]
2026-06-22T01:34:20.3249677Z         },
2026-06-22T01:34:20.3249762Z         "int": {
2026-06-22T01:34:20.3249850Z           "complete": true,
2026-06-22T01:34:20.3249936Z           "evidence": [
2026-06-22T01:34:20.3250017Z             {
2026-06-22T01:34:20.3250142Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.3250227Z               "line": 1045
2026-06-22T01:34:20.3250314Z             }
2026-06-22T01:34:20.3250395Z           ]
2026-06-22T01:34:20.3250480Z         },
2026-06-22T01:34:20.3250561Z         "unit": {
2026-06-22T01:34:20.3250652Z           "complete": true,
2026-06-22T01:34:20.3250737Z           "evidence": [
2026-06-22T01:34:20.3250823Z             {
2026-06-22T01:34:20.3250944Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3251019Z               "line": 2522
2026-06-22T01:34:20.3251110Z             }
2026-06-22T01:34:20.3251190Z           ]
2026-06-22T01:34:20.3251272Z         }
2026-06-22T01:34:20.3251353Z       }
2026-06-22T01:34:20.3251434Z     },
2026-06-22T01:34:20.3251524Z     {
2026-06-22T01:34:20.3251635Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-22T01:34:20.3255802Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-22T01:34:20.3256122Z       "requiredStages": [
2026-06-22T01:34:20.3256198Z         "doc",
2026-06-22T01:34:20.3256273Z         "impl",
2026-06-22T01:34:20.3256384Z         "unit"
2026-06-22T01:34:20.3256469Z       ],
2026-06-22T01:34:20.3256555Z       "stages": {
2026-06-22T01:34:20.3256660Z         "doc": {
2026-06-22T01:34:20.3256747Z           "complete": true,
2026-06-22T01:34:20.3256841Z           "evidence": [
2026-06-22T01:34:20.3256922Z             {
2026-06-22T01:34:20.3257024Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3257109Z               "line": 342
2026-06-22T01:34:20.3257194Z             }
2026-06-22T01:34:20.3257275Z           ]
2026-06-22T01:34:20.3257353Z         },
2026-06-22T01:34:20.3257442Z         "impl": {
2026-06-22T01:34:20.3257522Z           "complete": true,
2026-06-22T01:34:20.3257622Z           "evidence": [
2026-06-22T01:34:20.3257704Z             {
2026-06-22T01:34:20.3257830Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.3257910Z               "line": 333
2026-06-22T01:34:20.3257982Z             },
2026-06-22T01:34:20.3258059Z             {
2026-06-22T01:34:20.3258178Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3258263Z               "line": 892
2026-06-22T01:34:20.3258345Z             }
2026-06-22T01:34:20.3258441Z           ]
2026-06-22T01:34:20.3258521Z         },
2026-06-22T01:34:20.3258607Z         "int": {
2026-06-22T01:34:20.3258698Z           "complete": false,
2026-06-22T01:34:20.3258788Z           "evidence": []
2026-06-22T01:34:20.3258873Z         },
2026-06-22T01:34:20.3259122Z         "unit": {
2026-06-22T01:34:20.3259222Z           "complete": true,
2026-06-22T01:34:20.3259309Z           "evidence": [
2026-06-22T01:34:20.3259384Z             {
2026-06-22T01:34:20.3259489Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.3259561Z               "line": 1682
2026-06-22T01:34:20.3259647Z             }
2026-06-22T01:34:20.3259727Z           ]
2026-06-22T01:34:20.3259813Z         }
2026-06-22T01:34:20.3259900Z       }
2026-06-22T01:34:20.3259991Z     },
2026-06-22T01:34:20.3260070Z     {
2026-06-22T01:34:20.3260246Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-22T01:34:20.3265485Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-22T01:34:20.3265861Z       "requiredStages": [
2026-06-22T01:34:20.3265942Z         "impl",
2026-06-22T01:34:20.3266043Z         "unit"
2026-06-22T01:34:20.3266129Z       ],
2026-06-22T01:34:20.3266214Z       "stages": {
2026-06-22T01:34:20.3266310Z         "doc": {
2026-06-22T01:34:20.3266405Z           "complete": false,
2026-06-22T01:34:20.3266486Z           "evidence": []
2026-06-22T01:34:20.3266571Z         },
2026-06-22T01:34:20.3266654Z         "impl": {
2026-06-22T01:34:20.3266744Z           "complete": true,
2026-06-22T01:34:20.3266838Z           "evidence": [
2026-06-22T01:34:20.3266915Z             {
2026-06-22T01:34:20.3267034Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3267129Z               "line": 377
2026-06-22T01:34:20.3267201Z             },
2026-06-22T01:34:20.3267283Z             {
2026-06-22T01:34:20.3267392Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3267477Z               "line": 838
2026-06-22T01:34:20.3267560Z             }
2026-06-22T01:34:20.3267646Z           ]
2026-06-22T01:34:20.3267730Z         },
2026-06-22T01:34:20.3267816Z         "int": {
2026-06-22T01:34:20.3267903Z           "complete": false,
2026-06-22T01:34:20.3267989Z           "evidence": []
2026-06-22T01:34:20.3268078Z         },
2026-06-22T01:34:20.3268158Z         "unit": {
2026-06-22T01:34:20.3268254Z           "complete": true,
2026-06-22T01:34:20.3268343Z           "evidence": [
2026-06-22T01:34:20.3268419Z             {
2026-06-22T01:34:20.3268537Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3268615Z               "line": 2737
2026-06-22T01:34:20.3268695Z             },
2026-06-22T01:34:20.3268776Z             {
2026-06-22T01:34:20.3268896Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3269067Z               "line": 2806
2026-06-22T01:34:20.3269138Z             }
2026-06-22T01:34:20.3269221Z           ]
2026-06-22T01:34:20.3269311Z         }
2026-06-22T01:34:20.3269400Z       }
2026-06-22T01:34:20.3269482Z     },
2026-06-22T01:34:20.3269568Z     {
2026-06-22T01:34:20.3269687Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-22T01:34:20.3270494Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-22T01:34:20.3270597Z       "requiredStages": [
2026-06-22T01:34:20.3270677Z         "doc",
2026-06-22T01:34:20.3270763Z         "impl",
2026-06-22T01:34:20.3270849Z         "unit"
2026-06-22T01:34:20.3270933Z       ],
2026-06-22T01:34:20.3271027Z       "stages": {
2026-06-22T01:34:20.3271109Z         "doc": {
2026-06-22T01:34:20.3271201Z           "complete": true,
2026-06-22T01:34:20.3271286Z           "evidence": [
2026-06-22T01:34:20.3271371Z             {
2026-06-22T01:34:20.3271467Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3271558Z               "line": 366
2026-06-22T01:34:20.3271643Z             }
2026-06-22T01:34:20.3271729Z           ]
2026-06-22T01:34:20.3271929Z         },
2026-06-22T01:34:20.3272015Z         "impl": {
2026-06-22T01:34:20.3272106Z           "complete": true,
2026-06-22T01:34:20.3272291Z           "evidence": [
2026-06-22T01:34:20.3272378Z             {
2026-06-22T01:34:20.3272497Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:34:20.3272583Z               "line": 87
2026-06-22T01:34:20.3272669Z             },
2026-06-22T01:34:20.3272750Z             {
2026-06-22T01:34:20.3272868Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.3272954Z               "line": 203
2026-06-22T01:34:20.3273037Z             },
2026-06-22T01:34:20.3273126Z             {
2026-06-22T01:34:20.3273246Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3273332Z               "line": 55
2026-06-22T01:34:20.3273418Z             },
2026-06-22T01:34:20.3273507Z             {
2026-06-22T01:34:20.3273630Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.3273722Z               "line": 31
2026-06-22T01:34:20.3273803Z             },
2026-06-22T01:34:20.3273883Z             {
2026-06-22T01:34:20.3274008Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.3274089Z               "line": 446
2026-06-22T01:34:20.3274169Z             },
2026-06-22T01:34:20.3274255Z             {
2026-06-22T01:34:20.3274371Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3274456Z               "line": 95
2026-06-22T01:34:20.3274536Z             },
2026-06-22T01:34:20.3274623Z             {
2026-06-22T01:34:20.3274746Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.3274832Z               "line": 29
2026-06-22T01:34:20.3274923Z             },
2026-06-22T01:34:20.3274995Z             {
2026-06-22T01:34:20.3275119Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.3275199Z               "line": 104
2026-06-22T01:34:20.3275286Z             },
2026-06-22T01:34:20.3275372Z             {
2026-06-22T01:34:20.3275494Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3275601Z               "line": 208
2026-06-22T01:34:20.3275682Z             },
2026-06-22T01:34:20.3275770Z             {
2026-06-22T01:34:20.3275880Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:34:20.3275971Z               "line": 28
2026-06-22T01:34:20.3276055Z             },
2026-06-22T01:34:20.3276145Z             {
2026-06-22T01:34:20.3276264Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:34:20.3276351Z               "line": 74
2026-06-22T01:34:20.3276435Z             },
2026-06-22T01:34:20.3276517Z             {
2026-06-22T01:34:20.3276636Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:34:20.3276722Z               "line": 32
2026-06-22T01:34:20.3276807Z             },
2026-06-22T01:34:20.3276894Z             {
2026-06-22T01:34:20.3277004Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3277098Z               "line": 40
2026-06-22T01:34:20.3277180Z             },
2026-06-22T01:34:20.3277266Z             {
2026-06-22T01:34:20.3277379Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3277465Z               "line": 184
2026-06-22T01:34:20.3277538Z             },
2026-06-22T01:34:20.3277623Z             {
2026-06-22T01:34:20.3277742Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:34:20.3277819Z               "line": 61
2026-06-22T01:34:20.3277896Z             },
2026-06-22T01:34:20.3277985Z             {
2026-06-22T01:34:20.3278090Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:34:20.3278182Z               "line": 131
2026-06-22T01:34:20.3278271Z             },
2026-06-22T01:34:20.3278357Z             {
2026-06-22T01:34:20.3278459Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:34:20.3278549Z               "line": 223
2026-06-22T01:34:20.3278628Z             },
2026-06-22T01:34:20.3278790Z             {
2026-06-22T01:34:20.3278894Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:34:20.3279127Z               "line": 37
2026-06-22T01:34:20.3279208Z             },
2026-06-22T01:34:20.3279298Z             {
2026-06-22T01:34:20.3279417Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:34:20.3279499Z               "line": 38
2026-06-22T01:34:20.3279584Z             },
2026-06-22T01:34:20.3279665Z             {
2026-06-22T01:34:20.3279771Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:34:20.3279856Z               "line": 36
2026-06-22T01:34:20.3279932Z             },
2026-06-22T01:34:20.3280013Z             {
2026-06-22T01:34:20.3280128Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:34:20.3280204Z               "line": 40
2026-06-22T01:34:20.3280290Z             }
2026-06-22T01:34:20.3280372Z           ]
2026-06-22T01:34:20.3280453Z         },
2026-06-22T01:34:20.3280537Z         "int": {
2026-06-22T01:34:20.3280643Z           "complete": false,
2026-06-22T01:34:20.3280735Z           "evidence": []
2026-06-22T01:34:20.3280824Z         },
2026-06-22T01:34:20.3280910Z         "unit": {
2026-06-22T01:34:20.3281006Z           "complete": true,
2026-06-22T01:34:20.3281096Z           "evidence": [
2026-06-22T01:34:20.3281176Z             {
2026-06-22T01:34:20.3281294Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3281381Z               "line": 212
2026-06-22T01:34:20.3281460Z             },
2026-06-22T01:34:20.3281541Z             {
2026-06-22T01:34:20.3281664Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T01:34:20.3281746Z               "line": 136
2026-06-22T01:34:20.3281827Z             },
2026-06-22T01:34:20.3281907Z             {
2026-06-22T01:34:20.3282037Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:34:20.3282113Z               "line": 685
2026-06-22T01:34:20.3282198Z             },
2026-06-22T01:34:20.3282280Z             {
2026-06-22T01:34:20.3282399Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:34:20.3282480Z               "line": 224
2026-06-22T01:34:20.3282565Z             },
2026-06-22T01:34:20.3282653Z             {
2026-06-22T01:34:20.3282766Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T01:34:20.3282861Z               "line": 206
2026-06-22T01:34:20.3282938Z             },
2026-06-22T01:34:20.3283028Z             {
2026-06-22T01:34:20.3283129Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:34:20.3283219Z               "line": 112
2026-06-22T01:34:20.3283301Z             },
2026-06-22T01:34:20.3283386Z             {
2026-06-22T01:34:20.3283500Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:34:20.3283578Z               "line": 157
2026-06-22T01:34:20.3283663Z             },
2026-06-22T01:34:20.3283748Z             {
2026-06-22T01:34:20.3283854Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:34:20.3283945Z               "line": 215
2026-06-22T01:34:20.3284015Z             },
2026-06-22T01:34:20.3284100Z             {
2026-06-22T01:34:20.3284219Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:34:20.3284306Z               "line": 141
2026-06-22T01:34:20.3284386Z             },
2026-06-22T01:34:20.3284462Z             {
2026-06-22T01:34:20.3284587Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:34:20.3284673Z               "line": 162
2026-06-22T01:34:20.3284758Z             }
2026-06-22T01:34:20.3284844Z           ]
2026-06-22T01:34:20.3284931Z         }
2026-06-22T01:34:20.3285016Z       }
2026-06-22T01:34:20.3285096Z     },
2026-06-22T01:34:20.3285183Z     {
2026-06-22T01:34:20.3285307Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-22T01:34:20.3287154Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-22T01:34:20.3287569Z       "requiredStages": [
2026-06-22T01:34:20.3287648Z         "doc",
2026-06-22T01:34:20.3287736Z         "impl",
2026-06-22T01:34:20.3287821Z         "unit",
2026-06-22T01:34:20.3287907Z         "int"
2026-06-22T01:34:20.3287987Z       ],
2026-06-22T01:34:20.3288074Z       "stages": {
2026-06-22T01:34:20.3288155Z         "doc": {
2026-06-22T01:34:20.3288250Z           "complete": true,
2026-06-22T01:34:20.3288336Z           "evidence": [
2026-06-22T01:34:20.3288423Z             {
2026-06-22T01:34:20.3288535Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.3288646Z               "line": 250
2026-06-22T01:34:20.3288723Z             }
2026-06-22T01:34:20.3288827Z           ]
2026-06-22T01:34:20.3288913Z         },
2026-06-22T01:34:20.3289076Z         "impl": {
2026-06-22T01:34:20.3289165Z           "complete": true,
2026-06-22T01:34:20.3289260Z           "evidence": [
2026-06-22T01:34:20.3289336Z             {
2026-06-22T01:34:20.3289450Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:34:20.3289534Z               "line": 135
2026-06-22T01:34:20.3289619Z             },
2026-06-22T01:34:20.3289701Z             {
2026-06-22T01:34:20.3289802Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:34:20.3289896Z               "line": 157
2026-06-22T01:34:20.3289968Z             }
2026-06-22T01:34:20.3290050Z           ]
2026-06-22T01:34:20.3290135Z         },
2026-06-22T01:34:20.3290211Z         "int": {
2026-06-22T01:34:20.3290302Z           "complete": true,
2026-06-22T01:34:20.3290392Z           "evidence": [
2026-06-22T01:34:20.3290483Z             {
2026-06-22T01:34:20.3290612Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-22T01:34:20.3290703Z               "line": 15
2026-06-22T01:34:20.3290788Z             }
2026-06-22T01:34:20.3290874Z           ]
2026-06-22T01:34:20.3290956Z         },
2026-06-22T01:34:20.3291041Z         "unit": {
2026-06-22T01:34:20.3291140Z           "complete": true,
2026-06-22T01:34:20.3291217Z           "evidence": [
2026-06-22T01:34:20.3291304Z             {
2026-06-22T01:34:20.3291422Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-22T01:34:20.3291503Z               "line": 233
2026-06-22T01:34:20.3291590Z             }
2026-06-22T01:34:20.3291671Z           ]
2026-06-22T01:34:20.3291751Z         }
2026-06-22T01:34:20.3291831Z       }
2026-06-22T01:34:20.3291912Z     },
2026-06-22T01:34:20.3292002Z     {
2026-06-22T01:34:20.3292110Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-22T01:34:20.3292263Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-22T01:34:20.3292354Z       "requiredStages": [
2026-06-22T01:34:20.3292449Z         "impl",
2026-06-22T01:34:20.3292535Z         "unit"
2026-06-22T01:34:20.3292616Z       ],
2026-06-22T01:34:20.3292697Z       "stages": {
2026-06-22T01:34:20.3292782Z         "doc": {
2026-06-22T01:34:20.3292869Z           "complete": false,
2026-06-22T01:34:20.3292954Z           "evidence": []
2026-06-22T01:34:20.3293040Z         },
2026-06-22T01:34:20.3293130Z         "impl": {
2026-06-22T01:34:20.3293218Z           "complete": true,
2026-06-22T01:34:20.3293307Z           "evidence": [
2026-06-22T01:34:20.3293392Z             {
2026-06-22T01:34:20.3293513Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3293593Z               "line": 95
2026-06-22T01:34:20.3293674Z             },
2026-06-22T01:34:20.3293764Z             {
2026-06-22T01:34:20.3293876Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.3293960Z               "line": 117
2026-06-22T01:34:20.3294143Z             }
2026-06-22T01:34:20.3294232Z           ]
2026-06-22T01:34:20.3294394Z         },
2026-06-22T01:34:20.3294477Z         "int": {
2026-06-22T01:34:20.3294575Z           "complete": false,
2026-06-22T01:34:20.3294656Z           "evidence": []
2026-06-22T01:34:20.3294741Z         },
2026-06-22T01:34:20.3294827Z         "unit": {
2026-06-22T01:34:20.3294928Z           "complete": true,
2026-06-22T01:34:20.3295013Z           "evidence": [
2026-06-22T01:34:20.3295104Z             {
2026-06-22T01:34:20.3295214Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3295299Z               "line": 250
2026-06-22T01:34:20.3295390Z             },
2026-06-22T01:34:20.3295471Z             {
2026-06-22T01:34:20.3295576Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.3295661Z               "line": 412
2026-06-22T01:34:20.3295748Z             },
2026-06-22T01:34:20.3295838Z             {
2026-06-22T01:34:20.3295947Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.3296039Z               "line": 611
2026-06-22T01:34:20.3296129Z             },
2026-06-22T01:34:20.3296215Z             {
2026-06-22T01:34:20.3296319Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.3296407Z               "line": 669
2026-06-22T01:34:20.3296492Z             }
2026-06-22T01:34:20.3296577Z           ]
2026-06-22T01:34:20.3296658Z         }
2026-06-22T01:34:20.3296740Z       }
2026-06-22T01:34:20.3296820Z     },
2026-06-22T01:34:20.3296900Z     {
2026-06-22T01:34:20.3297019Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-22T01:34:20.3299536Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-22T01:34:20.3299646Z       "requiredStages": [
2026-06-22T01:34:20.3299725Z         "impl",
2026-06-22T01:34:20.3299806Z         "unit",
2026-06-22T01:34:20.3299891Z         "int"
2026-06-22T01:34:20.3299972Z       ],
2026-06-22T01:34:20.3300052Z       "stages": {
2026-06-22T01:34:20.3300141Z         "doc": {
2026-06-22T01:34:20.3300237Z           "complete": false,
2026-06-22T01:34:20.3300323Z           "evidence": []
2026-06-22T01:34:20.3300413Z         },
2026-06-22T01:34:20.3300499Z         "impl": {
2026-06-22T01:34:20.3300605Z           "complete": true,
2026-06-22T01:34:20.3300691Z           "evidence": [
2026-06-22T01:34:20.3300780Z             {
2026-06-22T01:34:20.3300901Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3300986Z               "line": 925
2026-06-22T01:34:20.3301071Z             },
2026-06-22T01:34:20.3301153Z             {
2026-06-22T01:34:20.3301282Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3301367Z               "line": 994
2026-06-22T01:34:20.3301449Z             }
2026-06-22T01:34:20.3301530Z           ]
2026-06-22T01:34:20.3301615Z         },
2026-06-22T01:34:20.3301701Z         "int": {
2026-06-22T01:34:20.3301792Z           "complete": true,
2026-06-22T01:34:20.3301879Z           "evidence": [
2026-06-22T01:34:20.3301963Z             {
2026-06-22T01:34:20.3302092Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:34:20.3302174Z               "line": 187
2026-06-22T01:34:20.3302254Z             },
2026-06-22T01:34:20.3302444Z             {
2026-06-22T01:34:20.3302562Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:34:20.3302732Z               "line": 348
2026-06-22T01:34:20.3302814Z             }
2026-06-22T01:34:20.3302901Z           ]
2026-06-22T01:34:20.3302985Z         },
2026-06-22T01:34:20.3303066Z         "unit": {
2026-06-22T01:34:20.3303158Z           "complete": true,
2026-06-22T01:34:20.3303239Z           "evidence": [
2026-06-22T01:34:20.3303328Z             {
2026-06-22T01:34:20.3303439Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3303524Z               "line": 1206
2026-06-22T01:34:20.3303614Z             },
2026-06-22T01:34:20.3303695Z             {
2026-06-22T01:34:20.3303806Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3303891Z               "line": 8116
2026-06-22T01:34:20.3303972Z             }
2026-06-22T01:34:20.3304059Z           ]
2026-06-22T01:34:20.3304135Z         }
2026-06-22T01:34:20.3304216Z       }
2026-06-22T01:34:20.3304311Z     },
2026-06-22T01:34:20.3304398Z     {
2026-06-22T01:34:20.3304492Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-22T01:34:20.3304679Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-22T01:34:20.3304769Z       "requiredStages": [
2026-06-22T01:34:20.3304854Z         "impl",
2026-06-22T01:34:20.3304945Z         "unit"
2026-06-22T01:34:20.3305027Z       ],
2026-06-22T01:34:20.3305112Z       "stages": {
2026-06-22T01:34:20.3305197Z         "doc": {
2026-06-22T01:34:20.3305291Z           "complete": false,
2026-06-22T01:34:20.3305378Z           "evidence": []
2026-06-22T01:34:20.3305460Z         },
2026-06-22T01:34:20.3305544Z         "impl": {
2026-06-22T01:34:20.3305635Z           "complete": true,
2026-06-22T01:34:20.3305722Z           "evidence": [
2026-06-22T01:34:20.3305807Z             {
2026-06-22T01:34:20.3305920Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3306004Z               "line": 262
2026-06-22T01:34:20.3306103Z             },
2026-06-22T01:34:20.3306178Z             {
2026-06-22T01:34:20.3306284Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3306384Z               "line": 307
2026-06-22T01:34:20.3306470Z             },
2026-06-22T01:34:20.3306555Z             {
2026-06-22T01:34:20.3306662Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3306741Z               "line": 319
2026-06-22T01:34:20.3306832Z             }
2026-06-22T01:34:20.3306914Z           ]
2026-06-22T01:34:20.3307004Z         },
2026-06-22T01:34:20.3307084Z         "int": {
2026-06-22T01:34:20.3307180Z           "complete": false,
2026-06-22T01:34:20.3307267Z           "evidence": []
2026-06-22T01:34:20.3307357Z         },
2026-06-22T01:34:20.3307433Z         "unit": {
2026-06-22T01:34:20.3307522Z           "complete": true,
2026-06-22T01:34:20.3307609Z           "evidence": [
2026-06-22T01:34:20.3307688Z             {
2026-06-22T01:34:20.3307796Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3307882Z               "line": 455
2026-06-22T01:34:20.3307959Z             },
2026-06-22T01:34:20.3308049Z             {
2026-06-22T01:34:20.3308154Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3308241Z               "line": 499
2026-06-22T01:34:20.3308322Z             }
2026-06-22T01:34:20.3308402Z           ]
2026-06-22T01:34:20.3308483Z         }
2026-06-22T01:34:20.3308565Z       }
2026-06-22T01:34:20.3308656Z     },
2026-06-22T01:34:20.3308736Z     {
2026-06-22T01:34:20.3308836Z       "id": "REQ-HOST-RUN-1",
2026-06-22T01:34:20.3311312Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-22T01:34:20.3311631Z       "requiredStages": [
2026-06-22T01:34:20.3311717Z         "impl",
2026-06-22T01:34:20.3311809Z         "unit",
2026-06-22T01:34:20.3311884Z         "int"
2026-06-22T01:34:20.3311965Z       ],
2026-06-22T01:34:20.3312052Z       "stages": {
2026-06-22T01:34:20.3312133Z         "doc": {
2026-06-22T01:34:20.3312217Z           "complete": false,
2026-06-22T01:34:20.3312304Z           "evidence": []
2026-06-22T01:34:20.3312377Z         },
2026-06-22T01:34:20.3312463Z         "impl": {
2026-06-22T01:34:20.3312556Z           "complete": true,
2026-06-22T01:34:20.3312638Z           "evidence": [
2026-06-22T01:34:20.3312749Z             {
2026-06-22T01:34:20.3312866Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.3312956Z               "line": 30
2026-06-22T01:34:20.3313047Z             },
2026-06-22T01:34:20.3313127Z             {
2026-06-22T01:34:20.3313254Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.3313341Z               "line": 76
2026-06-22T01:34:20.3313422Z             },
2026-06-22T01:34:20.3313507Z             {
2026-06-22T01:34:20.3313626Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.3313708Z               "line": 181
2026-06-22T01:34:20.3313794Z             },
2026-06-22T01:34:20.3313878Z             {
2026-06-22T01:34:20.3313975Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3314075Z               "line": 1266
2026-06-22T01:34:20.3314147Z             }
2026-06-22T01:34:20.3314231Z           ]
2026-06-22T01:34:20.3314314Z         },
2026-06-22T01:34:20.3314394Z         "int": {
2026-06-22T01:34:20.3314499Z           "complete": true,
2026-06-22T01:34:20.3314584Z           "evidence": [
2026-06-22T01:34:20.3314677Z             {
2026-06-22T01:34:20.3314795Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.3314876Z               "line": 288
2026-06-22T01:34:20.3314967Z             }
2026-06-22T01:34:20.3315038Z           ]
2026-06-22T01:34:20.3315128Z         },
2026-06-22T01:34:20.3315214Z         "unit": {
2026-06-22T01:34:20.3315301Z           "complete": true,
2026-06-22T01:34:20.3315386Z           "evidence": [
2026-06-22T01:34:20.3315467Z             {
2026-06-22T01:34:20.3315592Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.3315673Z               "line": 229
2026-06-22T01:34:20.3315757Z             },
2026-06-22T01:34:20.3315833Z             {
2026-06-22T01:34:20.3315948Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.3316138Z               "line": 296
2026-06-22T01:34:20.3316224Z             },
2026-06-22T01:34:20.3316324Z             {
2026-06-22T01:34:20.3316453Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.3316578Z               "line": 419
2026-06-22T01:34:20.3316644Z             }
2026-06-22T01:34:20.3316729Z           ]
2026-06-22T01:34:20.3316805Z         }
2026-06-22T01:34:20.3316893Z       }
2026-06-22T01:34:20.3316978Z     },
2026-06-22T01:34:20.3317058Z     {
2026-06-22T01:34:20.3317144Z       "id": "REQ-HOST-RUN-2",
2026-06-22T01:34:20.3318825Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-22T01:34:20.3319173Z       "requiredStages": [
2026-06-22T01:34:20.3319258Z         "impl",
2026-06-22T01:34:20.3319343Z         "unit",
2026-06-22T01:34:20.3319440Z         "int"
2026-06-22T01:34:20.3319521Z       ],
2026-06-22T01:34:20.3319616Z       "stages": {
2026-06-22T01:34:20.3319706Z         "doc": {
2026-06-22T01:34:20.3319797Z           "complete": false,
2026-06-22T01:34:20.3319883Z           "evidence": []
2026-06-22T01:34:20.3319959Z         },
2026-06-22T01:34:20.3320040Z         "impl": {
2026-06-22T01:34:20.3320131Z           "complete": true,
2026-06-22T01:34:20.3320226Z           "evidence": [
2026-06-22T01:34:20.3320302Z             {
2026-06-22T01:34:20.3320427Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.3320521Z               "line": 182
2026-06-22T01:34:20.3320603Z             },
2026-06-22T01:34:20.3320689Z             {
2026-06-22T01:34:20.3320794Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:34:20.3320888Z               "line": 113
2026-06-22T01:34:20.3320973Z             }
2026-06-22T01:34:20.3321055Z           ]
2026-06-22T01:34:20.3321139Z         },
2026-06-22T01:34:20.3321219Z         "int": {
2026-06-22T01:34:20.3321319Z           "complete": true,
2026-06-22T01:34:20.3321396Z           "evidence": [
2026-06-22T01:34:20.3321477Z             {
2026-06-22T01:34:20.3321590Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.3321673Z               "line": 575
2026-06-22T01:34:20.3321759Z             }
2026-06-22T01:34:20.3321844Z           ]
2026-06-22T01:34:20.3321934Z         },
2026-06-22T01:34:20.3322021Z         "unit": {
2026-06-22T01:34:20.3322111Z           "complete": true,
2026-06-22T01:34:20.3322206Z           "evidence": [
2026-06-22T01:34:20.3322278Z             {
2026-06-22T01:34:20.3322402Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T01:34:20.3322488Z               "line": 86
2026-06-22T01:34:20.3322583Z             }
2026-06-22T01:34:20.3322665Z           ]
2026-06-22T01:34:20.3322750Z         }
2026-06-22T01:34:20.3322831Z       }
2026-06-22T01:34:20.3322912Z     },
2026-06-22T01:34:20.3322999Z     {
2026-06-22T01:34:20.3323088Z       "id": "REQ-INFRA-1",
2026-06-22T01:34:20.3323271Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-22T01:34:20.3323356Z       "requiredStages": [],
2026-06-22T01:34:20.3323445Z       "stages": {
2026-06-22T01:34:20.3323535Z         "doc": {
2026-06-22T01:34:20.3323621Z           "complete": false,
2026-06-22T01:34:20.3323711Z           "evidence": []
2026-06-22T01:34:20.3323790Z         },
2026-06-22T01:34:20.3323876Z         "impl": {
2026-06-22T01:34:20.3326745Z           "complete": false,
2026-06-22T01:34:20.3326866Z           "evidence": []
2026-06-22T01:34:20.3326951Z         },
2026-06-22T01:34:20.3327041Z         "int": {
2026-06-22T01:34:20.3327143Z           "complete": false,
2026-06-22T01:34:20.3327233Z           "evidence": []
2026-06-22T01:34:20.3327327Z         },
2026-06-22T01:34:20.3327404Z         "unit": {
2026-06-22T01:34:20.3327491Z           "complete": false,
2026-06-22T01:34:20.3327581Z           "evidence": []
2026-06-22T01:34:20.3327661Z         }
2026-06-22T01:34:20.3327743Z       }
2026-06-22T01:34:20.3327824Z     },
2026-06-22T01:34:20.3327910Z     {
2026-06-22T01:34:20.3327990Z       "id": "REQ-INST-1",
2026-06-22T01:34:20.3328158Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-22T01:34:20.3328248Z       "requiredStages": [],
2026-06-22T01:34:20.3328324Z       "stages": {
2026-06-22T01:34:20.3328407Z         "doc": {
2026-06-22T01:34:20.3328500Z           "complete": false,
2026-06-22T01:34:20.3328591Z           "evidence": []
2026-06-22T01:34:20.3328686Z         },
2026-06-22T01:34:20.3328785Z         "impl": {
2026-06-22T01:34:20.3328864Z           "complete": false,
2026-06-22T01:34:20.3329184Z           "evidence": []
2026-06-22T01:34:20.3329260Z         },
2026-06-22T01:34:20.3329433Z         "int": {
2026-06-22T01:34:20.3329527Z           "complete": false,
2026-06-22T01:34:20.3329622Z           "evidence": []
2026-06-22T01:34:20.3329700Z         },
2026-06-22T01:34:20.3329785Z         "unit": {
2026-06-22T01:34:20.3329865Z           "complete": false,
2026-06-22T01:34:20.3329962Z           "evidence": []
2026-06-22T01:34:20.3330047Z         }
2026-06-22T01:34:20.3330129Z       }
2026-06-22T01:34:20.3330209Z     },
2026-06-22T01:34:20.3330295Z     {
2026-06-22T01:34:20.3330386Z       "id": "REQ-INST-10",
2026-06-22T01:34:20.3330596Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-22T01:34:20.3330691Z       "requiredStages": [
2026-06-22T01:34:20.3330771Z         "impl",
2026-06-22T01:34:20.3330853Z         "unit"
2026-06-22T01:34:20.3330935Z       ],
2026-06-22T01:34:20.3331020Z       "stages": {
2026-06-22T01:34:20.3331115Z         "doc": {
2026-06-22T01:34:20.3331201Z           "complete": false,
2026-06-22T01:34:20.3331288Z           "evidence": []
2026-06-22T01:34:20.3331368Z         },
2026-06-22T01:34:20.3331458Z         "impl": {
2026-06-22T01:34:20.3331548Z           "complete": true,
2026-06-22T01:34:20.3331643Z           "evidence": [
2026-06-22T01:34:20.3331718Z             {
2026-06-22T01:34:20.3331845Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3331932Z               "line": 648
2026-06-22T01:34:20.3332004Z             },
2026-06-22T01:34:20.3332089Z             {
2026-06-22T01:34:20.3332204Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3332285Z               "line": 725
2026-06-22T01:34:20.3332371Z             },
2026-06-22T01:34:20.3332456Z             {
2026-06-22T01:34:20.3332572Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:34:20.3332657Z               "line": 13
2026-06-22T01:34:20.3332742Z             },
2026-06-22T01:34:20.3332829Z             {
2026-06-22T01:34:20.3332934Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:34:20.3333029Z               "line": 67
2026-06-22T01:34:20.3333114Z             },
2026-06-22T01:34:20.3333202Z             {
2026-06-22T01:34:20.3333305Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.3333386Z               "line": 18
2026-06-22T01:34:20.3333468Z             },
2026-06-22T01:34:20.3333540Z             {
2026-06-22T01:34:20.3333653Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.3333734Z               "line": 444
2026-06-22T01:34:20.3333817Z             }
2026-06-22T01:34:20.3333897Z           ]
2026-06-22T01:34:20.3333982Z         },
2026-06-22T01:34:20.3334067Z         "int": {
2026-06-22T01:34:20.3334153Z           "complete": false,
2026-06-22T01:34:20.3334243Z           "evidence": []
2026-06-22T01:34:20.3334323Z         },
2026-06-22T01:34:20.3334408Z         "unit": {
2026-06-22T01:34:20.3334503Z           "complete": true,
2026-06-22T01:34:20.3334590Z           "evidence": [
2026-06-22T01:34:20.3334665Z             {
2026-06-22T01:34:20.3334785Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3334867Z               "line": 932
2026-06-22T01:34:20.3334947Z             },
2026-06-22T01:34:20.3335027Z             {
2026-06-22T01:34:20.3335138Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3335223Z               "line": 1309
2026-06-22T01:34:20.3335304Z             },
2026-06-22T01:34:20.3335386Z             {
2026-06-22T01:34:20.3335496Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3335581Z               "line": 1320
2026-06-22T01:34:20.3335666Z             },
2026-06-22T01:34:20.3335744Z             {
2026-06-22T01:34:20.3335863Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3335948Z               "line": 1336
2026-06-22T01:34:20.3336034Z             },
2026-06-22T01:34:20.3336210Z             {
2026-06-22T01:34:20.3336325Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3336511Z               "line": 1352
2026-06-22T01:34:20.3336597Z             },
2026-06-22T01:34:20.3336684Z             {
2026-06-22T01:34:20.3336788Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3336877Z               "line": 1374
2026-06-22T01:34:20.3336963Z             },
2026-06-22T01:34:20.3337034Z             {
2026-06-22T01:34:20.3337145Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3337234Z               "line": 1679
2026-06-22T01:34:20.3337310Z             },
2026-06-22T01:34:20.3337388Z             {
2026-06-22T01:34:20.3337493Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:34:20.3337582Z               "line": 130
2026-06-22T01:34:20.3337669Z             },
2026-06-22T01:34:20.3337755Z             {
2026-06-22T01:34:20.3337859Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:34:20.3337955Z               "line": 167
2026-06-22T01:34:20.3338046Z             },
2026-06-22T01:34:20.3338131Z             {
2026-06-22T01:34:20.3338245Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:34:20.3338328Z               "line": 175
2026-06-22T01:34:20.3338412Z             },
2026-06-22T01:34:20.3338494Z             {
2026-06-22T01:34:20.3338609Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:34:20.3338699Z               "line": 183
2026-06-22T01:34:20.3338779Z             },
2026-06-22T01:34:20.3338865Z             {
2026-06-22T01:34:20.3339042Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.3339127Z               "line": 896
2026-06-22T01:34:20.3339212Z             }
2026-06-22T01:34:20.3339298Z           ]
2026-06-22T01:34:20.3339383Z         }
2026-06-22T01:34:20.3339463Z       }
2026-06-22T01:34:20.3339548Z     },
2026-06-22T01:34:20.3339630Z     {
2026-06-22T01:34:20.3339716Z       "id": "REQ-INST-11",
2026-06-22T01:34:20.3339925Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-22T01:34:20.3340016Z       "requiredStages": [
2026-06-22T01:34:20.3340096Z         "impl",
2026-06-22T01:34:20.3340177Z         "unit"
2026-06-22T01:34:20.3340260Z       ],
2026-06-22T01:34:20.3340345Z       "stages": {
2026-06-22T01:34:20.3340430Z         "doc": {
2026-06-22T01:34:20.3340512Z           "complete": false,
2026-06-22T01:34:20.3340603Z           "evidence": []
2026-06-22T01:34:20.3340674Z         },
2026-06-22T01:34:20.3340750Z         "impl": {
2026-06-22T01:34:20.3340846Z           "complete": true,
2026-06-22T01:34:20.3340923Z           "evidence": [
2026-06-22T01:34:20.3340998Z             {
2026-06-22T01:34:20.3341122Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3341214Z               "line": 514
2026-06-22T01:34:20.3341303Z             },
2026-06-22T01:34:20.3341375Z             {
2026-06-22T01:34:20.3341495Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3341581Z               "line": 297
2026-06-22T01:34:20.3341660Z             },
2026-06-22T01:34:20.3341742Z             {
2026-06-22T01:34:20.3341868Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T01:34:20.3341956Z               "line": 59
2026-06-22T01:34:20.3342041Z             },
2026-06-22T01:34:20.3342127Z             {
2026-06-22T01:34:20.3342231Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3342316Z               "line": 5291
2026-06-22T01:34:20.3342391Z             },
2026-06-22T01:34:20.3342468Z             {
2026-06-22T01:34:20.3342560Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3342649Z               "line": 7137
2026-06-22T01:34:20.3342735Z             }
2026-06-22T01:34:20.3342813Z           ]
2026-06-22T01:34:20.3342898Z         },
2026-06-22T01:34:20.3342983Z         "int": {
2026-06-22T01:34:20.3343074Z           "complete": false,
2026-06-22T01:34:20.3343269Z           "evidence": []
2026-06-22T01:34:20.3343350Z         },
2026-06-22T01:34:20.3343437Z         "unit": {
2026-06-22T01:34:20.3343622Z           "complete": true,
2026-06-22T01:34:20.3343713Z           "evidence": [
2026-06-22T01:34:20.3343790Z             {
2026-06-22T01:34:20.3343917Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3343998Z               "line": 1479
2026-06-22T01:34:20.3344081Z             },
2026-06-22T01:34:20.3344166Z             {
2026-06-22T01:34:20.3344271Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3344362Z               "line": 1512
2026-06-22T01:34:20.3344438Z             },
2026-06-22T01:34:20.3344514Z             {
2026-06-22T01:34:20.3344631Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3344713Z               "line": 527
2026-06-22T01:34:20.3344793Z             },
2026-06-22T01:34:20.3344873Z             {
2026-06-22T01:34:20.3344982Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T01:34:20.3345068Z               "line": 160
2026-06-22T01:34:20.3345155Z             },
2026-06-22T01:34:20.3345249Z             {
2026-06-22T01:34:20.3345360Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T01:34:20.3345441Z               "line": 190
2026-06-22T01:34:20.3345521Z             },
2026-06-22T01:34:20.3345607Z             {
2026-06-22T01:34:20.3345717Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T01:34:20.3345803Z               "line": 225
2026-06-22T01:34:20.3345888Z             },
2026-06-22T01:34:20.3345970Z             {
2026-06-22T01:34:20.3346075Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3346161Z               "line": 7994
2026-06-22T01:34:20.3346241Z             }
2026-06-22T01:34:20.3346319Z           ]
2026-06-22T01:34:20.3346394Z         }
2026-06-22T01:34:20.3346485Z       }
2026-06-22T01:34:20.3346565Z     },
2026-06-22T01:34:20.3346652Z     {
2026-06-22T01:34:20.3346737Z       "id": "REQ-INST-12",
2026-06-22T01:34:20.3347024Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-22T01:34:20.3347128Z       "requiredStages": [
2026-06-22T01:34:20.3347210Z         "impl",
2026-06-22T01:34:20.3347292Z         "unit"
2026-06-22T01:34:20.3347367Z       ],
2026-06-22T01:34:20.3347447Z       "stages": {
2026-06-22T01:34:20.3347532Z         "doc": {
2026-06-22T01:34:20.3347623Z           "complete": false,
2026-06-22T01:34:20.3347715Z           "evidence": []
2026-06-22T01:34:20.3347780Z         },
2026-06-22T01:34:20.3347866Z         "impl": {
2026-06-22T01:34:20.3347953Z           "complete": true,
2026-06-22T01:34:20.3348048Z           "evidence": [
2026-06-22T01:34:20.3348128Z             {
2026-06-22T01:34:20.3348248Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3348338Z               "line": 566
2026-06-22T01:34:20.3348415Z             },
2026-06-22T01:34:20.3348500Z             {
2026-06-22T01:34:20.3348615Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3348696Z               "line": 659
2026-06-22T01:34:20.3348781Z             },
2026-06-22T01:34:20.3348864Z             {
2026-06-22T01:34:20.3349040Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3349115Z               "line": 739
2026-06-22T01:34:20.3349202Z             },
2026-06-22T01:34:20.3349283Z             {
2026-06-22T01:34:20.3349397Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3349478Z               "line": 96
2026-06-22T01:34:20.3349588Z             },
2026-06-22T01:34:20.3349663Z             {
2026-06-22T01:34:20.3349763Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3349849Z               "line": 269
2026-06-22T01:34:20.3349929Z             },
2026-06-22T01:34:20.3350008Z             {
2026-06-22T01:34:20.3350118Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:34:20.3350328Z               "line": 148
2026-06-22T01:34:20.3350418Z             }
2026-06-22T01:34:20.3350495Z           ]
2026-06-22T01:34:20.3350666Z         },
2026-06-22T01:34:20.3350752Z         "int": {
2026-06-22T01:34:20.3350839Z           "complete": false,
2026-06-22T01:34:20.3350925Z           "evidence": []
2026-06-22T01:34:20.3351014Z         },
2026-06-22T01:34:20.3351092Z         "unit": {
2026-06-22T01:34:20.3351187Z           "complete": true,
2026-06-22T01:34:20.3351268Z           "evidence": [
2026-06-22T01:34:20.3351353Z             {
2026-06-22T01:34:20.3351473Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3351548Z               "line": 1554
2026-06-22T01:34:20.3351629Z             },
2026-06-22T01:34:20.3351706Z             {
2026-06-22T01:34:20.3351821Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3351906Z               "line": 1577
2026-06-22T01:34:20.3351987Z             },
2026-06-22T01:34:20.3352069Z             {
2026-06-22T01:34:20.3352197Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3352288Z               "line": 1614
2026-06-22T01:34:20.3352380Z             },
2026-06-22T01:34:20.3352456Z             {
2026-06-22T01:34:20.3352563Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3352644Z               "line": 457
2026-06-22T01:34:20.3352730Z             },
2026-06-22T01:34:20.3352810Z             {
2026-06-22T01:34:20.3352918Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:34:20.3353000Z               "line": 185
2026-06-22T01:34:20.3353072Z             },
2026-06-22T01:34:20.3353158Z             {
2026-06-22T01:34:20.3353262Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:34:20.3353348Z               "line": 206
2026-06-22T01:34:20.3353429Z             },
2026-06-22T01:34:20.3353514Z             {
2026-06-22T01:34:20.3353634Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:34:20.3353720Z               "line": 232
2026-06-22T01:34:20.3353792Z             }
2026-06-22T01:34:20.3353867Z           ]
2026-06-22T01:34:20.3353949Z         }
2026-06-22T01:34:20.3354035Z       }
2026-06-22T01:34:20.3354111Z     },
2026-06-22T01:34:20.3354192Z     {
2026-06-22T01:34:20.3354283Z       "id": "REQ-INST-13",
2026-06-22T01:34:20.3354458Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-22T01:34:20.3354540Z       "requiredStages": [
2026-06-22T01:34:20.3354617Z         "impl",
2026-06-22T01:34:20.3354703Z         "unit"
2026-06-22T01:34:20.3354787Z       ],
2026-06-22T01:34:20.3354869Z       "stages": {
2026-06-22T01:34:20.3354951Z         "doc": {
2026-06-22T01:34:20.3355046Z           "complete": false,
2026-06-22T01:34:20.3355130Z           "evidence": []
2026-06-22T01:34:20.3355211Z         },
2026-06-22T01:34:20.3355297Z         "impl": {
2026-06-22T01:34:20.3355391Z           "complete": true,
2026-06-22T01:34:20.3355485Z           "evidence": [
2026-06-22T01:34:20.3355566Z             {
2026-06-22T01:34:20.3355682Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3355772Z               "line": 100
2026-06-22T01:34:20.3355857Z             },
2026-06-22T01:34:20.3355948Z             {
2026-06-22T01:34:20.3356077Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:34:20.3356167Z               "line": 171
2026-06-22T01:34:20.3356249Z             }
2026-06-22T01:34:20.3356335Z           ]
2026-06-22T01:34:20.3356415Z         },
2026-06-22T01:34:20.3356506Z         "int": {
2026-06-22T01:34:20.3356592Z           "complete": false,
2026-06-22T01:34:20.3356682Z           "evidence": []
2026-06-22T01:34:20.3356768Z         },
2026-06-22T01:34:20.3356849Z         "unit": {
2026-06-22T01:34:20.3356931Z           "complete": true,
2026-06-22T01:34:20.3357011Z           "evidence": [
2026-06-22T01:34:20.3357097Z             {
2026-06-22T01:34:20.3357217Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:34:20.3357379Z               "line": 261
2026-06-22T01:34:20.3357465Z             },
2026-06-22T01:34:20.3357607Z             {
2026-06-22T01:34:20.3357727Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:34:20.3357809Z               "line": 279
2026-06-22T01:34:20.3357894Z             }
2026-06-22T01:34:20.3357969Z           ]
2026-06-22T01:34:20.3358054Z         }
2026-06-22T01:34:20.3358135Z       }
2026-06-22T01:34:20.3358218Z     },
2026-06-22T01:34:20.3358307Z     {
2026-06-22T01:34:20.3358392Z       "id": "REQ-INST-14",
2026-06-22T01:34:20.3358751Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-22T01:34:20.3358847Z       "requiredStages": [
2026-06-22T01:34:20.3358923Z         "doc",
2026-06-22T01:34:20.3359089Z         "impl",
2026-06-22T01:34:20.3359171Z         "unit"
2026-06-22T01:34:20.3359256Z       ],
2026-06-22T01:34:20.3359341Z       "stages": {
2026-06-22T01:34:20.3359438Z         "doc": {
2026-06-22T01:34:20.3359533Z           "complete": true,
2026-06-22T01:34:20.3359619Z           "evidence": [
2026-06-22T01:34:20.3359700Z             {
2026-06-22T01:34:20.3359791Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3359876Z               "line": 588
2026-06-22T01:34:20.3359957Z             },
2026-06-22T01:34:20.3360038Z             {
2026-06-22T01:34:20.3360148Z               "path": "docs/STORAGE.md",
2026-06-22T01:34:20.3360228Z               "line": 49
2026-06-22T01:34:20.3360318Z             }
2026-06-22T01:34:20.3360400Z           ]
2026-06-22T01:34:20.3360485Z         },
2026-06-22T01:34:20.3360573Z         "impl": {
2026-06-22T01:34:20.3360654Z           "complete": true,
2026-06-22T01:34:20.3360736Z           "evidence": [
2026-06-22T01:34:20.3360818Z             {
2026-06-22T01:34:20.3360950Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3361036Z               "line": 410
2026-06-22T01:34:20.3361127Z             },
2026-06-22T01:34:20.3361203Z             {
2026-06-22T01:34:20.3361322Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3361404Z               "line": 367
2026-06-22T01:34:20.3361485Z             },
2026-06-22T01:34:20.3361560Z             {
2026-06-22T01:34:20.3361676Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.3361761Z               "line": 293
2026-06-22T01:34:20.3361847Z             },
2026-06-22T01:34:20.3361928Z             {
2026-06-22T01:34:20.3362038Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3362123Z               "line": 1577
2026-06-22T01:34:20.3362213Z             }
2026-06-22T01:34:20.3362296Z           ]
2026-06-22T01:34:20.3362382Z         },
2026-06-22T01:34:20.3362466Z         "int": {
2026-06-22T01:34:20.3362557Z           "complete": false,
2026-06-22T01:34:20.3362649Z           "evidence": []
2026-06-22T01:34:20.3362734Z         },
2026-06-22T01:34:20.3362824Z         "unit": {
2026-06-22T01:34:20.3362916Z           "complete": true,
2026-06-22T01:34:20.3363007Z           "evidence": [
2026-06-22T01:34:20.3363095Z             {
2026-06-22T01:34:20.3363223Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3363309Z               "line": 1163
2026-06-22T01:34:20.3363389Z             },
2026-06-22T01:34:20.3363474Z             {
2026-06-22T01:34:20.3363588Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3363675Z               "line": 944
2026-06-22T01:34:20.3363760Z             },
2026-06-22T01:34:20.3363841Z             {
2026-06-22T01:34:20.3363957Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3364042Z               "line": 1205
2026-06-22T01:34:20.3364132Z             },
2026-06-22T01:34:20.3364204Z             {
2026-06-22T01:34:20.3364318Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.3364404Z               "line": 659
2026-06-22T01:34:20.3364489Z             },
2026-06-22T01:34:20.3364675Z             {
2026-06-22T01:34:20.3364818Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3365009Z               "line": 8070
2026-06-22T01:34:20.3365085Z             }
2026-06-22T01:34:20.3365173Z           ]
2026-06-22T01:34:20.3365249Z         }
2026-06-22T01:34:20.3365338Z       }
2026-06-22T01:34:20.3365429Z     },
2026-06-22T01:34:20.3365506Z     {
2026-06-22T01:34:20.3365592Z       "id": "REQ-INST-15",
2026-06-22T01:34:20.3366294Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-22T01:34:20.3366393Z       "requiredStages": [
2026-06-22T01:34:20.3366480Z         "doc",
2026-06-22T01:34:20.3366566Z         "impl",
2026-06-22T01:34:20.3366660Z         "unit"
2026-06-22T01:34:20.3366746Z       ],
2026-06-22T01:34:20.3366847Z       "stages": {
2026-06-22T01:34:20.3366928Z         "doc": {
2026-06-22T01:34:20.3367023Z           "complete": true,
2026-06-22T01:34:20.3367119Z           "evidence": [
2026-06-22T01:34:20.3367200Z             {
2026-06-22T01:34:20.3367376Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-22T01:34:20.3367463Z               "line": 3
2026-06-22T01:34:20.3367547Z             }
2026-06-22T01:34:20.3367628Z           ]
2026-06-22T01:34:20.3367715Z         },
2026-06-22T01:34:20.3367796Z         "impl": {
2026-06-22T01:34:20.3367886Z           "complete": true,
2026-06-22T01:34:20.3367962Z           "evidence": [
2026-06-22T01:34:20.3368040Z             {
2026-06-22T01:34:20.3368167Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3368243Z               "line": 353
2026-06-22T01:34:20.3368325Z             },
2026-06-22T01:34:20.3368412Z             {
2026-06-22T01:34:20.3368520Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.3368614Z               "line": 60
2026-06-22T01:34:20.3368695Z             },
2026-06-22T01:34:20.3368782Z             {
2026-06-22T01:34:20.3368910Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3369068Z               "line": 368
2026-06-22T01:34:20.3369144Z             },
2026-06-22T01:34:20.3369230Z             {
2026-06-22T01:34:20.3369345Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3369430Z               "line": 417
2026-06-22T01:34:20.3369516Z             },
2026-06-22T01:34:20.3369596Z             {
2026-06-22T01:34:20.3369702Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:34:20.3369788Z               "line": 19
2026-06-22T01:34:20.3369873Z             },
2026-06-22T01:34:20.3369955Z             {
2026-06-22T01:34:20.3370060Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:34:20.3370145Z               "line": 70
2026-06-22T01:34:20.3370221Z             },
2026-06-22T01:34:20.3370304Z             {
2026-06-22T01:34:20.3370408Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:34:20.3370498Z               "line": 96
2026-06-22T01:34:20.3370584Z             },
2026-06-22T01:34:20.3370666Z             {
2026-06-22T01:34:20.3370779Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:34:20.3370869Z               "line": 121
2026-06-22T01:34:20.3370960Z             },
2026-06-22T01:34:20.3371045Z             {
2026-06-22T01:34:20.3371143Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:34:20.3371233Z               "line": 172
2026-06-22T01:34:20.3371310Z             },
2026-06-22T01:34:20.3371392Z             {
2026-06-22T01:34:20.3371510Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.3371597Z               "line": 178
2026-06-22T01:34:20.3371683Z             },
2026-06-22T01:34:20.3371768Z             {
2026-06-22T01:34:20.3371872Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3372054Z               "line": 1469
2026-06-22T01:34:20.3372139Z             }
2026-06-22T01:34:20.3372222Z           ]
2026-06-22T01:34:20.3372383Z         },
2026-06-22T01:34:20.3372468Z         "int": {
2026-06-22T01:34:20.3372546Z           "complete": false,
2026-06-22T01:34:20.3372645Z           "evidence": []
2026-06-22T01:34:20.3372717Z         },
2026-06-22T01:34:20.3372802Z         "unit": {
2026-06-22T01:34:20.3372899Z           "complete": true,
2026-06-22T01:34:20.3372979Z           "evidence": [
2026-06-22T01:34:20.3373056Z             {
2026-06-22T01:34:20.3373176Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3373271Z               "line": 577
2026-06-22T01:34:20.3373341Z             },
2026-06-22T01:34:20.3373417Z             {
2026-06-22T01:34:20.3373543Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.3373628Z               "line": 638
2026-06-22T01:34:20.3373712Z             },
2026-06-22T01:34:20.3373793Z             {
2026-06-22T01:34:20.3373917Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:34:20.3374001Z               "line": 213
2026-06-22T01:34:20.3374091Z             },
2026-06-22T01:34:20.3374172Z             {
2026-06-22T01:34:20.3374278Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:34:20.3374358Z               "line": 249
2026-06-22T01:34:20.3374439Z             },
2026-06-22T01:34:20.3374517Z             {
2026-06-22T01:34:20.3374617Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:34:20.3374701Z               "line": 262
2026-06-22T01:34:20.3374788Z             },
2026-06-22T01:34:20.3374869Z             {
2026-06-22T01:34:20.3374978Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:34:20.3375054Z               "line": 338
2026-06-22T01:34:20.3375141Z             },
2026-06-22T01:34:20.3375221Z             {
2026-06-22T01:34:20.3375331Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.3375418Z               "line": 690
2026-06-22T01:34:20.3375504Z             },
2026-06-22T01:34:20.3375588Z             {
2026-06-22T01:34:20.3375689Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3375776Z               "line": 8007
2026-06-22T01:34:20.3375851Z             },
2026-06-22T01:34:20.3375937Z             {
2026-06-22T01:34:20.3376038Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3376124Z               "line": 9837
2026-06-22T01:34:20.3376208Z             }
2026-06-22T01:34:20.3376289Z           ]
2026-06-22T01:34:20.3376375Z         }
2026-06-22T01:34:20.3376456Z       }
2026-06-22T01:34:20.3376534Z     },
2026-06-22T01:34:20.3376620Z     {
2026-06-22T01:34:20.3376710Z       "id": "REQ-INST-2",
2026-06-22T01:34:20.3376831Z       "title": "Per-node files, synced Psyche mind",
2026-06-22T01:34:20.3376925Z       "requiredStages": [
2026-06-22T01:34:20.3377011Z         "impl",
2026-06-22T01:34:20.3377097Z         "unit"
2026-06-22T01:34:20.3377183Z       ],
2026-06-22T01:34:20.3377278Z       "stages": {
2026-06-22T01:34:20.3377355Z         "doc": {
2026-06-22T01:34:20.3377440Z           "complete": false,
2026-06-22T01:34:20.3377530Z           "evidence": []
2026-06-22T01:34:20.3377621Z         },
2026-06-22T01:34:20.3377703Z         "impl": {
2026-06-22T01:34:20.3377793Z           "complete": true,
2026-06-22T01:34:20.3377878Z           "evidence": [
2026-06-22T01:34:20.3377945Z             {
2026-06-22T01:34:20.3378074Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3378165Z               "line": 108
2026-06-22T01:34:20.3378246Z             },
2026-06-22T01:34:20.3378338Z             {
2026-06-22T01:34:20.3378460Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.3378551Z               "line": 28
2026-06-22T01:34:20.3378633Z             },
2026-06-22T01:34:20.3378714Z             {
2026-06-22T01:34:20.3378813Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.3378900Z               "line": 74
2026-06-22T01:34:20.3379179Z             },
2026-06-22T01:34:20.3379265Z             {
2026-06-22T01:34:20.3379381Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.3379556Z               "line": 96
2026-06-22T01:34:20.3379638Z             },
2026-06-22T01:34:20.3379719Z             {
2026-06-22T01:34:20.3379837Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:34:20.3379910Z               "line": 86
2026-06-22T01:34:20.3380000Z             },
2026-06-22T01:34:20.3380081Z             {
2026-06-22T01:34:20.3380186Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:34:20.3380272Z               "line": 118
2026-06-22T01:34:20.3380353Z             }
2026-06-22T01:34:20.3380428Z           ]
2026-06-22T01:34:20.3380510Z         },
2026-06-22T01:34:20.3380601Z         "int": {
2026-06-22T01:34:20.3380696Z           "complete": false,
2026-06-22T01:34:20.3380782Z           "evidence": []
2026-06-22T01:34:20.3380854Z         },
2026-06-22T01:34:20.3380949Z         "unit": {
2026-06-22T01:34:20.3381043Z           "complete": true,
2026-06-22T01:34:20.3381130Z           "evidence": [
2026-06-22T01:34:20.3381217Z             {
2026-06-22T01:34:20.3381330Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:34:20.3381415Z               "line": 250
2026-06-22T01:34:20.3381500Z             },
2026-06-22T01:34:20.3381577Z             {
2026-06-22T01:34:20.3381694Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:34:20.3381779Z               "line": 280
2026-06-22T01:34:20.3381866Z             }
2026-06-22T01:34:20.3381952Z           ]
2026-06-22T01:34:20.3382037Z         }
2026-06-22T01:34:20.3382127Z       }
2026-06-22T01:34:20.3382200Z     },
2026-06-22T01:34:20.3382285Z     {
2026-06-22T01:34:20.3382370Z       "id": "REQ-INST-3",
2026-06-22T01:34:20.3382519Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-22T01:34:20.3382610Z       "requiredStages": [
2026-06-22T01:34:20.3382690Z         "doc",
2026-06-22T01:34:20.3382772Z         "impl",
2026-06-22T01:34:20.3382853Z         "unit"
2026-06-22T01:34:20.3382943Z       ],
2026-06-22T01:34:20.3383028Z       "stages": {
2026-06-22T01:34:20.3383116Z         "doc": {
2026-06-22T01:34:20.3383205Z           "complete": true,
2026-06-22T01:34:20.3383301Z           "evidence": [
2026-06-22T01:34:20.3383392Z             {
2026-06-22T01:34:20.3383488Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-22T01:34:20.3383577Z               "line": 3
2026-06-22T01:34:20.3383658Z             }
2026-06-22T01:34:20.3383746Z           ]
2026-06-22T01:34:20.3383826Z         },
2026-06-22T01:34:20.3383906Z         "impl": {
2026-06-22T01:34:20.3383997Z           "complete": true,
2026-06-22T01:34:20.3384080Z           "evidence": [
2026-06-22T01:34:20.3384164Z             {
2026-06-22T01:34:20.3384287Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.3384382Z               "line": 60
2026-06-22T01:34:20.3384463Z             },
2026-06-22T01:34:20.3384552Z             {
2026-06-22T01:34:20.3384680Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3384772Z               "line": 480
2026-06-22T01:34:20.3384852Z             },
2026-06-22T01:34:20.3384932Z             {
2026-06-22T01:34:20.3385048Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3385133Z               "line": 254
2026-06-22T01:34:20.3385214Z             },
2026-06-22T01:34:20.3385300Z             {
2026-06-22T01:34:20.3385415Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3385501Z               "line": 384
2026-06-22T01:34:20.3385595Z             },
2026-06-22T01:34:20.3385677Z             {
2026-06-22T01:34:20.3385786Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3385877Z               "line": 418
2026-06-22T01:34:20.3385958Z             },
2026-06-22T01:34:20.3386031Z             {
2026-06-22T01:34:20.3386148Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T01:34:20.3386336Z               "line": 74
2026-06-22T01:34:20.3386421Z             },
2026-06-22T01:34:20.3386578Z             {
2026-06-22T01:34:20.3386703Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3386796Z               "line": 234
2026-06-22T01:34:20.3386882Z             },
2026-06-22T01:34:20.3386968Z             {
2026-06-22T01:34:20.3387090Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3387170Z               "line": 396
2026-06-22T01:34:20.3387257Z             },
2026-06-22T01:34:20.3387333Z             {
2026-06-22T01:34:20.3387447Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3387537Z               "line": 45
2026-06-22T01:34:20.3387625Z             },
2026-06-22T01:34:20.3387710Z             {
2026-06-22T01:34:20.3387823Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3387910Z               "line": 114
2026-06-22T01:34:20.3387996Z             },
2026-06-22T01:34:20.3388081Z             {
2026-06-22T01:34:20.3388191Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3388287Z               "line": 152
2026-06-22T01:34:20.3391070Z             },
2026-06-22T01:34:20.3391180Z             {
2026-06-22T01:34:20.3391318Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3391400Z               "line": 168
2026-06-22T01:34:20.3391481Z             },
2026-06-22T01:34:20.3391565Z             {
2026-06-22T01:34:20.3391680Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3391763Z               "line": 178
2026-06-22T01:34:20.3391843Z             },
2026-06-22T01:34:20.3391928Z             {
2026-06-22T01:34:20.3392046Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3392137Z               "line": 210
2026-06-22T01:34:20.3392221Z             },
2026-06-22T01:34:20.3392306Z             {
2026-06-22T01:34:20.3392417Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3392522Z               "line": 287
2026-06-22T01:34:20.3392607Z             },
2026-06-22T01:34:20.3392692Z             {
2026-06-22T01:34:20.3392812Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3392888Z               "line": 311
2026-06-22T01:34:20.3392968Z             },
2026-06-22T01:34:20.3393051Z             {
2026-06-22T01:34:20.3393155Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3393236Z               "line": 389
2026-06-22T01:34:20.3393318Z             },
2026-06-22T01:34:20.3393404Z             {
2026-06-22T01:34:20.3393513Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3393593Z               "line": 438
2026-06-22T01:34:20.3393671Z             },
2026-06-22T01:34:20.3393751Z             {
2026-06-22T01:34:20.3393870Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-22T01:34:20.3393952Z               "line": 37
2026-06-22T01:34:20.3394038Z             },
2026-06-22T01:34:20.3394128Z             {
2026-06-22T01:34:20.3394252Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3394339Z               "line": 62
2026-06-22T01:34:20.3394423Z             },
2026-06-22T01:34:20.3394500Z             {
2026-06-22T01:34:20.3394610Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.3394701Z               "line": 279
2026-06-22T01:34:20.3394776Z             },
2026-06-22T01:34:20.3394856Z             {
2026-06-22T01:34:20.3394966Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3395051Z               "line": 1848
2026-06-22T01:34:20.3395136Z             }
2026-06-22T01:34:20.3395211Z           ]
2026-06-22T01:34:20.3395293Z         },
2026-06-22T01:34:20.3395379Z         "int": {
2026-06-22T01:34:20.3395474Z           "complete": false,
2026-06-22T01:34:20.3395550Z           "evidence": []
2026-06-22T01:34:20.3395637Z         },
2026-06-22T01:34:20.3395723Z         "unit": {
2026-06-22T01:34:20.3395947Z           "complete": true,
2026-06-22T01:34:20.3396042Z           "evidence": [
2026-06-22T01:34:20.3396218Z             {
2026-06-22T01:34:20.3396337Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.3396428Z               "line": 360
2026-06-22T01:34:20.3396514Z             },
2026-06-22T01:34:20.3396581Z             {
2026-06-22T01:34:20.3396703Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3396795Z               "line": 837
2026-06-22T01:34:20.3396882Z             },
2026-06-22T01:34:20.3396958Z             {
2026-06-22T01:34:20.3397072Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3397158Z               "line": 894
2026-06-22T01:34:20.3397235Z             },
2026-06-22T01:34:20.3397319Z             {
2026-06-22T01:34:20.3397437Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.3397523Z               "line": 889
2026-06-22T01:34:20.3397604Z             },
2026-06-22T01:34:20.3397692Z             {
2026-06-22T01:34:20.3397797Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.3397894Z               "line": 1014
2026-06-22T01:34:20.3397975Z             },
2026-06-22T01:34:20.3398054Z             {
2026-06-22T01:34:20.3398180Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3398260Z               "line": 1264
2026-06-22T01:34:20.3398341Z             },
2026-06-22T01:34:20.3398422Z             {
2026-06-22T01:34:20.3398552Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3398646Z               "line": 1405
2026-06-22T01:34:20.3398732Z             },
2026-06-22T01:34:20.3398809Z             {
2026-06-22T01:34:20.3398922Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3399114Z               "line": 449
2026-06-22T01:34:20.3399195Z             },
2026-06-22T01:34:20.3399276Z             {
2026-06-22T01:34:20.3399395Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3399487Z               "line": 485
2026-06-22T01:34:20.3399561Z             },
2026-06-22T01:34:20.3399647Z             {
2026-06-22T01:34:20.3399753Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3399839Z               "line": 540
2026-06-22T01:34:20.3399924Z             },
2026-06-22T01:34:20.3400006Z             {
2026-06-22T01:34:20.3400111Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3400200Z               "line": 697
2026-06-22T01:34:20.3400286Z             },
2026-06-22T01:34:20.3400362Z             {
2026-06-22T01:34:20.3400467Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3400552Z               "line": 931
2026-06-22T01:34:20.3400633Z             },
2026-06-22T01:34:20.3400710Z             {
2026-06-22T01:34:20.3400815Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3400900Z               "line": 945
2026-06-22T01:34:20.3400986Z             },
2026-06-22T01:34:20.3401069Z             {
2026-06-22T01:34:20.3401187Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3401267Z               "line": 1290
2026-06-22T01:34:20.3401349Z             },
2026-06-22T01:34:20.3401435Z             {
2026-06-22T01:34:20.3401548Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.3401635Z               "line": 609
2026-06-22T01:34:20.3401722Z             },
2026-06-22T01:34:20.3401797Z             {
2026-06-22T01:34:20.3401902Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3401989Z               "line": 8031
2026-06-22T01:34:20.3402074Z             }
2026-06-22T01:34:20.3402159Z           ]
2026-06-22T01:34:20.3402236Z         }
2026-06-22T01:34:20.3402308Z       }
2026-06-22T01:34:20.3402384Z     },
2026-06-22T01:34:20.3402469Z     {
2026-06-22T01:34:20.3402549Z       "id": "REQ-INST-4",
2026-06-22T01:34:20.3402725Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-22T01:34:20.3402914Z       "requiredStages": [
2026-06-22T01:34:20.3403000Z         "impl",
2026-06-22T01:34:20.3403186Z         "unit"
2026-06-22T01:34:20.3403277Z       ],
2026-06-22T01:34:20.3403363Z       "stages": {
2026-06-22T01:34:20.3403443Z         "doc": {
2026-06-22T01:34:20.3403538Z           "complete": false,
2026-06-22T01:34:20.3403626Z           "evidence": []
2026-06-22T01:34:20.3403711Z         },
2026-06-22T01:34:20.3403796Z         "impl": {
2026-06-22T01:34:20.3403892Z           "complete": true,
2026-06-22T01:34:20.3403973Z           "evidence": [
2026-06-22T01:34:20.3404045Z             {
2026-06-22T01:34:20.3404163Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3404246Z               "line": 385
2026-06-22T01:34:20.3404330Z             },
2026-06-22T01:34:20.3404411Z             {
2026-06-22T01:34:20.3404517Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3404603Z               "line": 202
2026-06-22T01:34:20.3404688Z             },
2026-06-22T01:34:20.3404769Z             {
2026-06-22T01:34:20.3404880Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3404965Z               "line": 234
2026-06-22T01:34:20.3405050Z             },
2026-06-22T01:34:20.3405127Z             {
2026-06-22T01:34:20.3405242Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3405331Z               "line": 274
2026-06-22T01:34:20.3405416Z             }
2026-06-22T01:34:20.3405492Z           ]
2026-06-22T01:34:20.3405578Z         },
2026-06-22T01:34:20.3405657Z         "int": {
2026-06-22T01:34:20.3405742Z           "complete": false,
2026-06-22T01:34:20.3405834Z           "evidence": []
2026-06-22T01:34:20.3405921Z         },
2026-06-22T01:34:20.3406006Z         "unit": {
2026-06-22T01:34:20.3406096Z           "complete": true,
2026-06-22T01:34:20.3406187Z           "evidence": [
2026-06-22T01:34:20.3406268Z             {
2026-06-22T01:34:20.3406396Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3406483Z               "line": 889
2026-06-22T01:34:20.3406573Z             },
2026-06-22T01:34:20.3406658Z             {
2026-06-22T01:34:20.3406768Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3406860Z               "line": 561
2026-06-22T01:34:20.3406935Z             },
2026-06-22T01:34:20.3407011Z             {
2026-06-22T01:34:20.3407127Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3407203Z               "line": 668
2026-06-22T01:34:20.3407288Z             },
2026-06-22T01:34:20.3407369Z             {
2026-06-22T01:34:20.3407484Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3407569Z               "line": 750
2026-06-22T01:34:20.3407651Z             }
2026-06-22T01:34:20.3407728Z           ]
2026-06-22T01:34:20.3407799Z         }
2026-06-22T01:34:20.3407879Z       }
2026-06-22T01:34:20.3407959Z     },
2026-06-22T01:34:20.3408045Z     {
2026-06-22T01:34:20.3408136Z       "id": "REQ-INST-5",
2026-06-22T01:34:20.3408309Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-22T01:34:20.3408406Z       "requiredStages": [
2026-06-22T01:34:20.3408487Z         "impl",
2026-06-22T01:34:20.3408572Z         "unit",
2026-06-22T01:34:20.3408653Z         "int"
2026-06-22T01:34:20.3408740Z       ],
2026-06-22T01:34:20.3408816Z       "stages": {
2026-06-22T01:34:20.3408896Z         "doc": {
2026-06-22T01:34:20.3409074Z           "complete": false,
2026-06-22T01:34:20.3409149Z           "evidence": []
2026-06-22T01:34:20.3409235Z         },
2026-06-22T01:34:20.3409321Z         "impl": {
2026-06-22T01:34:20.3409412Z           "complete": true,
2026-06-22T01:34:20.3409497Z           "evidence": [
2026-06-22T01:34:20.3409583Z             {
2026-06-22T01:34:20.3409703Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T01:34:20.3409788Z               "line": 85
2026-06-22T01:34:20.3409879Z             },
2026-06-22T01:34:20.3410056Z             {
2026-06-22T01:34:20.3410170Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3410333Z               "line": 68
2026-06-22T01:34:20.3410413Z             },
2026-06-22T01:34:20.3410499Z             {
2026-06-22T01:34:20.3410605Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3410691Z               "line": 99
2026-06-22T01:34:20.3410765Z             },
2026-06-22T01:34:20.3410850Z             {
2026-06-22T01:34:20.3410960Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3411047Z               "line": 183
2026-06-22T01:34:20.3411131Z             },
2026-06-22T01:34:20.3411212Z             {
2026-06-22T01:34:20.3411314Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3411395Z               "line": 314
2026-06-22T01:34:20.3411479Z             }
2026-06-22T01:34:20.3411556Z           ]
2026-06-22T01:34:20.3411629Z         },
2026-06-22T01:34:20.3411714Z         "int": {
2026-06-22T01:34:20.3411803Z           "complete": true,
2026-06-22T01:34:20.3411885Z           "evidence": [
2026-06-22T01:34:20.3411976Z             {
2026-06-22T01:34:20.3412104Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.3412195Z               "line": 156
2026-06-22T01:34:20.3412277Z             },
2026-06-22T01:34:20.3412362Z             {
2026-06-22T01:34:20.3412467Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T01:34:20.3412549Z               "line": 145
2026-06-22T01:34:20.3412634Z             },
2026-06-22T01:34:20.3412719Z             {
2026-06-22T01:34:20.3412834Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3412926Z               "line": 707
2026-06-22T01:34:20.3413005Z             },
2026-06-22T01:34:20.3413081Z             {
2026-06-22T01:34:20.3413195Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3413281Z               "line": 1069
2026-06-22T01:34:20.3413365Z             }
2026-06-22T01:34:20.3413440Z           ]
2026-06-22T01:34:20.3413512Z         },
2026-06-22T01:34:20.3413604Z         "unit": {
2026-06-22T01:34:20.3413694Z           "complete": true,
2026-06-22T01:34:20.3413774Z           "evidence": [
2026-06-22T01:34:20.3413856Z             {
2026-06-22T01:34:20.3413966Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3414051Z               "line": 552
2026-06-22T01:34:20.3414133Z             },
2026-06-22T01:34:20.3414209Z             {
2026-06-22T01:34:20.3414323Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3414408Z               "line": 595
2026-06-22T01:34:20.3414486Z             },
2026-06-22T01:34:20.3414571Z             {
2026-06-22T01:34:20.3414675Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:34:20.3414762Z               "line": 219
2026-06-22T01:34:20.3414844Z             }
2026-06-22T01:34:20.3414924Z           ]
2026-06-22T01:34:20.3415010Z         }
2026-06-22T01:34:20.3415087Z       }
2026-06-22T01:34:20.3415173Z     },
2026-06-22T01:34:20.3415257Z     {
2026-06-22T01:34:20.3415343Z       "id": "REQ-INST-6",
2026-06-22T01:34:20.3415525Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-22T01:34:20.3415610Z       "requiredStages": [
2026-06-22T01:34:20.3415692Z         "impl",
2026-06-22T01:34:20.3415774Z         "unit",
2026-06-22T01:34:20.3415858Z         "int"
2026-06-22T01:34:20.3415948Z       ],
2026-06-22T01:34:20.3416039Z       "stages": {
2026-06-22T01:34:20.3416217Z         "doc": {
2026-06-22T01:34:20.3416307Z           "complete": true,
2026-06-22T01:34:20.3416394Z           "evidence": [
2026-06-22T01:34:20.3416476Z             {
2026-06-22T01:34:20.3416575Z               "path": "docs/DEFERRED.md",
2026-06-22T01:34:20.3416665Z               "line": 13
2026-06-22T01:34:20.3416743Z             }
2026-06-22T01:34:20.3416829Z           ]
2026-06-22T01:34:20.3416909Z         },
2026-06-22T01:34:20.3416985Z         "impl": {
2026-06-22T01:34:20.3417162Z           "complete": true,
2026-06-22T01:34:20.3417242Z           "evidence": [
2026-06-22T01:34:20.3417401Z             {
2026-06-22T01:34:20.3417519Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3417605Z               "line": 391
2026-06-22T01:34:20.3417688Z             },
2026-06-22T01:34:20.3417772Z             {
2026-06-22T01:34:20.3417882Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:34:20.3417963Z               "line": 27
2026-06-22T01:34:20.3418040Z             },
2026-06-22T01:34:20.3418120Z             {
2026-06-22T01:34:20.3418234Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:34:20.3418317Z               "line": 73
2026-06-22T01:34:20.3418402Z             },
2026-06-22T01:34:20.3418482Z             {
2026-06-22T01:34:20.3418591Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:34:20.3418677Z               "line": 182
2026-06-22T01:34:20.3418761Z             },
2026-06-22T01:34:20.3418846Z             {
2026-06-22T01:34:20.3419028Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3419113Z               "line": 426
2026-06-22T01:34:20.3419194Z             },
2026-06-22T01:34:20.3419276Z             {
2026-06-22T01:34:20.3419390Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T01:34:20.3419466Z               "line": 31
2026-06-22T01:34:20.3419552Z             },
2026-06-22T01:34:20.3419619Z             {
2026-06-22T01:34:20.3419738Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.3419818Z               "line": 202
2026-06-22T01:34:20.3419901Z             },
2026-06-22T01:34:20.3419981Z             {
2026-06-22T01:34:20.3420086Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.3420177Z               "line": 83
2026-06-22T01:34:20.3420258Z             },
2026-06-22T01:34:20.3420334Z             {
2026-06-22T01:34:20.3420439Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3420530Z               "line": 1849
2026-06-22T01:34:20.3420611Z             },
2026-06-22T01:34:20.3420696Z             {
2026-06-22T01:34:20.3420806Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.3420888Z               "line": 179
2026-06-22T01:34:20.3420973Z             },
2026-06-22T01:34:20.3421073Z             {
2026-06-22T01:34:20.3421184Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.3421274Z               "line": 215
2026-06-22T01:34:20.3421354Z             }
2026-06-22T01:34:20.3421444Z           ]
2026-06-22T01:34:20.3421521Z         },
2026-06-22T01:34:20.3421602Z         "int": {
2026-06-22T01:34:20.3421692Z           "complete": true,
2026-06-22T01:34:20.3421778Z           "evidence": [
2026-06-22T01:34:20.3421869Z             {
2026-06-22T01:34:20.3421988Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3422078Z               "line": 721
2026-06-22T01:34:20.3422160Z             },
2026-06-22T01:34:20.3422250Z             {
2026-06-22T01:34:20.3422363Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3422440Z               "line": 1114
2026-06-22T01:34:20.3422527Z             },
2026-06-22T01:34:20.3422612Z             {
2026-06-22T01:34:20.3422717Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.3422799Z               "line": 726
2026-06-22T01:34:20.3422889Z             }
2026-06-22T01:34:20.3422966Z           ]
2026-06-22T01:34:20.3423041Z         },
2026-06-22T01:34:20.3423123Z         "unit": {
2026-06-22T01:34:20.3423209Z           "complete": true,
2026-06-22T01:34:20.3423304Z           "evidence": [
2026-06-22T01:34:20.3423385Z             {
2026-06-22T01:34:20.3423505Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3423589Z               "line": 661
2026-06-22T01:34:20.3423670Z             },
2026-06-22T01:34:20.3423751Z             {
2026-06-22T01:34:20.3423860Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.3424054Z               "line": 899
2026-06-22T01:34:20.3424135Z             },
2026-06-22T01:34:20.3424306Z             {
2026-06-22T01:34:20.3424426Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T01:34:20.3424517Z               "line": 66
2026-06-22T01:34:20.3424597Z             },
2026-06-22T01:34:20.3424678Z             {
2026-06-22T01:34:20.3424788Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.3424879Z               "line": 297
2026-06-22T01:34:20.3424964Z             },
2026-06-22T01:34:20.3425051Z             {
2026-06-22T01:34:20.3425160Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.3425250Z               "line": 203
2026-06-22T01:34:20.3425317Z             }
2026-06-22T01:34:20.3425399Z           ]
2026-06-22T01:34:20.3425479Z         }
2026-06-22T01:34:20.3425555Z       }
2026-06-22T01:34:20.3425642Z     },
2026-06-22T01:34:20.3425724Z     {
2026-06-22T01:34:20.3425832Z       "id": "REQ-INST-7",
2026-06-22T01:34:20.3425962Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-22T01:34:20.3426062Z       "requiredStages": [
2026-06-22T01:34:20.3426146Z         "impl",
2026-06-22T01:34:20.3426233Z         "unit",
2026-06-22T01:34:20.3426320Z         "int"
2026-06-22T01:34:20.3426405Z       ],
2026-06-22T01:34:20.3426489Z       "stages": {
2026-06-22T01:34:20.3426560Z         "doc": {
2026-06-22T01:34:20.3426656Z           "complete": false,
2026-06-22T01:34:20.3426745Z           "evidence": []
2026-06-22T01:34:20.3426835Z         },
2026-06-22T01:34:20.3426935Z         "impl": {
2026-06-22T01:34:20.3427026Z           "complete": true,
2026-06-22T01:34:20.3427121Z           "evidence": [
2026-06-22T01:34:20.3427206Z             {
2026-06-22T01:34:20.3427331Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3427412Z               "line": 436
2026-06-22T01:34:20.3427497Z             },
2026-06-22T01:34:20.3427574Z             {
2026-06-22T01:34:20.3427708Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3427802Z               "line": 27
2026-06-22T01:34:20.3427884Z             },
2026-06-22T01:34:20.3427966Z             {
2026-06-22T01:34:20.3428084Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3428179Z               "line": 207
2026-06-22T01:34:20.3428267Z             },
2026-06-22T01:34:20.3428346Z             {
2026-06-22T01:34:20.3428475Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3428562Z               "line": 344
2026-06-22T01:34:20.3428647Z             },
2026-06-22T01:34:20.3428728Z             {
2026-06-22T01:34:20.3428843Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-22T01:34:20.3428934Z               "line": 59
2026-06-22T01:34:20.3429108Z             },
2026-06-22T01:34:20.3429194Z             {
2026-06-22T01:34:20.3429302Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3429401Z               "line": 41
2026-06-22T01:34:20.3429483Z             },
2026-06-22T01:34:20.3429569Z             {
2026-06-22T01:34:20.3429697Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.3429778Z               "line": 27
2026-06-22T01:34:20.3429860Z             },
2026-06-22T01:34:20.3429941Z             {
2026-06-22T01:34:20.3430064Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.3430146Z               "line": 119
2026-06-22T01:34:20.3430217Z             },
2026-06-22T01:34:20.3430298Z             {
2026-06-22T01:34:20.3430412Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.3430490Z               "line": 134
2026-06-22T01:34:20.3430561Z             },
2026-06-22T01:34:20.3430646Z             {
2026-06-22T01:34:20.3430761Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:34:20.3430847Z               "line": 139
2026-06-22T01:34:20.3430928Z             }
2026-06-22T01:34:20.3431110Z           ]
2026-06-22T01:34:20.3431195Z         },
2026-06-22T01:34:20.3431280Z         "int": {
2026-06-22T01:34:20.3431477Z           "complete": true,
2026-06-22T01:34:20.3431571Z           "evidence": [
2026-06-22T01:34:20.3431653Z             {
2026-06-22T01:34:20.3431764Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T01:34:20.3431848Z               "line": 145
2026-06-22T01:34:20.3431937Z             },
2026-06-22T01:34:20.3432018Z             {
2026-06-22T01:34:20.3432143Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3432228Z               "line": 665
2026-06-22T01:34:20.3432313Z             },
2026-06-22T01:34:20.3432400Z             {
2026-06-22T01:34:20.3432505Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3432600Z               "line": 964
2026-06-22T01:34:20.3432681Z             }
2026-06-22T01:34:20.3432763Z           ]
2026-06-22T01:34:20.3432849Z         },
2026-06-22T01:34:20.3432929Z         "unit": {
2026-06-22T01:34:20.3433035Z           "complete": true,
2026-06-22T01:34:20.3433116Z           "evidence": [
2026-06-22T01:34:20.3433206Z             {
2026-06-22T01:34:20.3433320Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3433411Z               "line": 1134
2026-06-22T01:34:20.3433496Z             },
2026-06-22T01:34:20.3433568Z             {
2026-06-22T01:34:20.3433693Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3433769Z               "line": 1521
2026-06-22T01:34:20.3433854Z             },
2026-06-22T01:34:20.3433936Z             {
2026-06-22T01:34:20.3434065Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T01:34:20.3434154Z               "line": 84
2026-06-22T01:34:20.3434225Z             },
2026-06-22T01:34:20.3434306Z             {
2026-06-22T01:34:20.3434415Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3434499Z               "line": 812
2026-06-22T01:34:20.3434594Z             },
2026-06-22T01:34:20.3434676Z             {
2026-06-22T01:34:20.3434795Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3434876Z               "line": 823
2026-06-22T01:34:20.3434967Z             },
2026-06-22T01:34:20.3435043Z             {
2026-06-22T01:34:20.3435152Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3435238Z               "line": 838
2026-06-22T01:34:20.3435320Z             },
2026-06-22T01:34:20.3435406Z             {
2026-06-22T01:34:20.3435514Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.3435601Z               "line": 166
2026-06-22T01:34:20.3435691Z             },
2026-06-22T01:34:20.3435777Z             {
2026-06-22T01:34:20.3435907Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.3435992Z               "line": 181
2026-06-22T01:34:20.3436092Z             },
2026-06-22T01:34:20.3436173Z             {
2026-06-22T01:34:20.3436303Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.3436387Z               "line": 214
2026-06-22T01:34:20.3436488Z             }
2026-06-22T01:34:20.3436575Z           ]
2026-06-22T01:34:20.3436655Z         }
2026-06-22T01:34:20.3436741Z       }
2026-06-22T01:34:20.3436822Z     },
2026-06-22T01:34:20.3436904Z     {
2026-06-22T01:34:20.3436988Z       "id": "REQ-INST-8",
2026-06-22T01:34:20.3437144Z       "title": "Remote-control mode distinct from local operation",
2026-06-22T01:34:20.3437226Z       "requiredStages": [
2026-06-22T01:34:20.3437310Z         "impl",
2026-06-22T01:34:20.3437399Z         "unit",
2026-06-22T01:34:20.3437486Z         "int"
2026-06-22T01:34:20.3437572Z       ],
2026-06-22T01:34:20.3437653Z       "stages": {
2026-06-22T01:34:20.3437728Z         "doc": {
2026-06-22T01:34:20.3437824Z           "complete": false,
2026-06-22T01:34:20.3437906Z           "evidence": []
2026-06-22T01:34:20.3437986Z         },
2026-06-22T01:34:20.3438067Z         "impl": {
2026-06-22T01:34:20.3438234Z           "complete": true,
2026-06-22T01:34:20.3438320Z           "evidence": [
2026-06-22T01:34:20.3438478Z             {
2026-06-22T01:34:20.3438601Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.3438687Z               "line": 202
2026-06-22T01:34:20.3438769Z             },
2026-06-22T01:34:20.3438850Z             {
2026-06-22T01:34:20.3439036Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.3439113Z               "line": 525
2026-06-22T01:34:20.3439202Z             },
2026-06-22T01:34:20.3439288Z             {
2026-06-22T01:34:20.3439394Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.3439480Z               "line": 565
2026-06-22T01:34:20.3439559Z             },
2026-06-22T01:34:20.3439649Z             {
2026-06-22T01:34:20.3439759Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:34:20.3439848Z               "line": 62
2026-06-22T01:34:20.3439924Z             }
2026-06-22T01:34:20.3440013Z           ]
2026-06-22T01:34:20.3440096Z         },
2026-06-22T01:34:20.3440177Z         "int": {
2026-06-22T01:34:20.3440276Z           "complete": true,
2026-06-22T01:34:20.3440353Z           "evidence": [
2026-06-22T01:34:20.3440434Z             {
2026-06-22T01:34:20.3440558Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.3440643Z               "line": 415
2026-06-22T01:34:20.3440721Z             },
2026-06-22T01:34:20.3440796Z             {
2026-06-22T01:34:20.3440905Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3440992Z               "line": 1028
2026-06-22T01:34:20.3441078Z             }
2026-06-22T01:34:20.3441168Z           ]
2026-06-22T01:34:20.3441249Z         },
2026-06-22T01:34:20.3441331Z         "unit": {
2026-06-22T01:34:20.3441416Z           "complete": true,
2026-06-22T01:34:20.3441511Z           "evidence": [
2026-06-22T01:34:20.3441583Z             {
2026-06-22T01:34:20.3441708Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.3441797Z               "line": 369
2026-06-22T01:34:20.3441874Z             },
2026-06-22T01:34:20.3441961Z             {
2026-06-22T01:34:20.3442074Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.3442155Z               "line": 636
2026-06-22T01:34:20.3442236Z             },
2026-06-22T01:34:20.3442319Z             {
2026-06-22T01:34:20.3442436Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:34:20.3442521Z               "line": 116
2026-06-22T01:34:20.3442607Z             },
2026-06-22T01:34:20.3442689Z             {
2026-06-22T01:34:20.3442803Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:34:20.3442878Z               "line": 160
2026-06-22T01:34:20.3442970Z             }
2026-06-22T01:34:20.3443051Z           ]
2026-06-22T01:34:20.3443127Z         }
2026-06-22T01:34:20.3443207Z       }
2026-06-22T01:34:20.3443285Z     },
2026-06-22T01:34:20.3443375Z     {
2026-06-22T01:34:20.3443465Z       "id": "REQ-INST-9",
2026-06-22T01:34:20.3443656Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-22T01:34:20.3443752Z       "requiredStages": [
2026-06-22T01:34:20.3443837Z         "impl",
2026-06-22T01:34:20.3443924Z         "unit"
2026-06-22T01:34:20.3444005Z       ],
2026-06-22T01:34:20.3444086Z       "stages": {
2026-06-22T01:34:20.3444171Z         "doc": {
2026-06-22T01:34:20.3444272Z           "complete": false,
2026-06-22T01:34:20.3444357Z           "evidence": []
2026-06-22T01:34:20.3444443Z         },
2026-06-22T01:34:20.3444524Z         "impl": {
2026-06-22T01:34:20.3444620Z           "complete": true,
2026-06-22T01:34:20.3444714Z           "evidence": [
2026-06-22T01:34:20.3444795Z             {
2026-06-22T01:34:20.3444914Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3445003Z               "line": 449
2026-06-22T01:34:20.3445083Z             }
2026-06-22T01:34:20.3445169Z           ]
2026-06-22T01:34:20.3445346Z         },
2026-06-22T01:34:20.3445436Z         "int": {
2026-06-22T01:34:20.3445518Z           "complete": false,
2026-06-22T01:34:20.3445694Z           "evidence": []
2026-06-22T01:34:20.3445779Z         },
2026-06-22T01:34:20.3445866Z         "unit": {
2026-06-22T01:34:20.3445956Z           "complete": true,
2026-06-22T01:34:20.3446046Z           "evidence": [
2026-06-22T01:34:20.3446133Z             {
2026-06-22T01:34:20.3446252Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3446342Z               "line": 1397
2026-06-22T01:34:20.3446428Z             },
2026-06-22T01:34:20.3446510Z             {
2026-06-22T01:34:20.3446624Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3446714Z               "line": 1406
2026-06-22T01:34:20.3446796Z             },
2026-06-22T01:34:20.3446867Z             {
2026-06-22T01:34:20.3446972Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3447062Z               "line": 1422
2026-06-22T01:34:20.3447144Z             },
2026-06-22T01:34:20.3447224Z             {
2026-06-22T01:34:20.3447329Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3447416Z               "line": 1434
2026-06-22T01:34:20.3447502Z             },
2026-06-22T01:34:20.3447581Z             {
2026-06-22T01:34:20.3447695Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3447776Z               "line": 1454
2026-06-22T01:34:20.3447861Z             }
2026-06-22T01:34:20.3447950Z           ]
2026-06-22T01:34:20.3448031Z         }
2026-06-22T01:34:20.3448113Z       }
2026-06-22T01:34:20.3448199Z     },
2026-06-22T01:34:20.3448284Z     {
2026-06-22T01:34:20.3448375Z       "id": "REQ-INSTALL-1",
2026-06-22T01:34:20.3448556Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-22T01:34:20.3448651Z       "requiredStages": [
2026-06-22T01:34:20.3448733Z         "doc",
2026-06-22T01:34:20.3448823Z         "impl",
2026-06-22T01:34:20.3448904Z         "int"
2026-06-22T01:34:20.3449053Z       ],
2026-06-22T01:34:20.3449133Z       "stages": {
2026-06-22T01:34:20.3449219Z         "doc": {
2026-06-22T01:34:20.3449309Z           "complete": true,
2026-06-22T01:34:20.3449392Z           "evidence": [
2026-06-22T01:34:20.3449476Z             {
2026-06-22T01:34:20.3449571Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3449654Z               "line": 754
2026-06-22T01:34:20.3449735Z             }
2026-06-22T01:34:20.3449814Z           ]
2026-06-22T01:34:20.3449901Z         },
2026-06-22T01:34:20.3449987Z         "impl": {
2026-06-22T01:34:20.3450068Z           "complete": true,
2026-06-22T01:34:20.3450148Z           "evidence": [
2026-06-22T01:34:20.3450238Z             {
2026-06-22T01:34:20.3450343Z               "path": "installer/install.ps1",
2026-06-22T01:34:20.3450432Z               "line": 57
2026-06-22T01:34:20.3450517Z             },
2026-06-22T01:34:20.3450598Z             {
2026-06-22T01:34:20.3450704Z               "path": "installer/install.sh",
2026-06-22T01:34:20.3450793Z               "line": 52
2026-06-22T01:34:20.3450874Z             }
2026-06-22T01:34:20.3450956Z           ]
2026-06-22T01:34:20.3451037Z         },
2026-06-22T01:34:20.3451122Z         "int": {
2026-06-22T01:34:20.3451217Z           "complete": true,
2026-06-22T01:34:20.3451305Z           "evidence": [
2026-06-22T01:34:20.3451385Z             {
2026-06-22T01:34:20.3451518Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T01:34:20.3451605Z               "line": 21
2026-06-22T01:34:20.3451681Z             }
2026-06-22T01:34:20.3454312Z           ]
2026-06-22T01:34:20.3454421Z         },
2026-06-22T01:34:20.3454508Z         "unit": {
2026-06-22T01:34:20.3454603Z           "complete": false,
2026-06-22T01:34:20.3454688Z           "evidence": []
2026-06-22T01:34:20.3454770Z         }
2026-06-22T01:34:20.3454865Z       }
2026-06-22T01:34:20.3454946Z     },
2026-06-22T01:34:20.3455027Z     {
2026-06-22T01:34:20.3455124Z       "id": "REQ-INSTALL-10",
2026-06-22T01:34:20.3456760Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-22T01:34:20.3456959Z       "requiredStages": [
2026-06-22T01:34:20.3457037Z         "impl",
2026-06-22T01:34:20.3457126Z         "unit"
2026-06-22T01:34:20.3457236Z       ],
2026-06-22T01:34:20.3457327Z       "stages": {
2026-06-22T01:34:20.3457413Z         "doc": {
2026-06-22T01:34:20.3457498Z           "complete": false,
2026-06-22T01:34:20.3457588Z           "evidence": []
2026-06-22T01:34:20.3457671Z         },
2026-06-22T01:34:20.3457756Z         "impl": {
2026-06-22T01:34:20.3457836Z           "complete": true,
2026-06-22T01:34:20.3457947Z           "evidence": [
2026-06-22T01:34:20.3458033Z             {
2026-06-22T01:34:20.3458142Z               "path": "installer/install.ps1",
2026-06-22T01:34:20.3458241Z               "line": 191
2026-06-22T01:34:20.3458322Z             }
2026-06-22T01:34:20.3458412Z           ]
2026-06-22T01:34:20.3458491Z         },
2026-06-22T01:34:20.3458582Z         "int": {
2026-06-22T01:34:20.3458673Z           "complete": false,
2026-06-22T01:34:20.3458769Z           "evidence": []
2026-06-22T01:34:20.3458844Z         },
2026-06-22T01:34:20.3458920Z         "unit": {
2026-06-22T01:34:20.3459093Z           "complete": true,
2026-06-22T01:34:20.3459182Z           "evidence": [
2026-06-22T01:34:20.3459270Z             {
2026-06-22T01:34:20.3459393Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T01:34:20.3459473Z               "line": 211
2026-06-22T01:34:20.3459569Z             }
2026-06-22T01:34:20.3459651Z           ]
2026-06-22T01:34:20.3459726Z         }
2026-06-22T01:34:20.3459817Z       }
2026-06-22T01:34:20.3459899Z     },
2026-06-22T01:34:20.3459990Z     {
2026-06-22T01:34:20.3460084Z       "id": "REQ-INSTALL-11",
2026-06-22T01:34:20.3461855Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-22T01:34:20.3461945Z       "requiredStages": [
2026-06-22T01:34:20.3462030Z         "doc",
2026-06-22T01:34:20.3462107Z         "impl",
2026-06-22T01:34:20.3462180Z         "unit"
2026-06-22T01:34:20.3462259Z       ],
2026-06-22T01:34:20.3462359Z       "stages": {
2026-06-22T01:34:20.3462446Z         "doc": {
2026-06-22T01:34:20.3462537Z           "complete": true,
2026-06-22T01:34:20.3462628Z           "evidence": [
2026-06-22T01:34:20.3462708Z             {
2026-06-22T01:34:20.3462804Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3462894Z               "line": 138
2026-06-22T01:34:20.3462970Z             },
2026-06-22T01:34:20.3463056Z             {
2026-06-22T01:34:20.3463167Z               "path": "docs/MANIFEST.md",
2026-06-22T01:34:20.3463256Z               "line": 82
2026-06-22T01:34:20.3463347Z             }
2026-06-22T01:34:20.3463429Z           ]
2026-06-22T01:34:20.3463515Z         },
2026-06-22T01:34:20.3463599Z         "impl": {
2026-06-22T01:34:20.3463693Z           "complete": true,
2026-06-22T01:34:20.3463780Z           "evidence": [
2026-06-22T01:34:20.3463862Z             {
2026-06-22T01:34:20.3463989Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.3464080Z               "line": 223
2026-06-22T01:34:20.3464285Z             },
2026-06-22T01:34:20.3464371Z             {
2026-06-22T01:34:20.3464595Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3464677Z               "line": 99
2026-06-22T01:34:20.3464758Z             },
2026-06-22T01:34:20.3464843Z             {
2026-06-22T01:34:20.3464962Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.3465054Z               "line": 117
2026-06-22T01:34:20.3465139Z             },
2026-06-22T01:34:20.3465229Z             {
2026-06-22T01:34:20.3465345Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:34:20.3465421Z               "line": 332
2026-06-22T01:34:20.3465510Z             },
2026-06-22T01:34:20.3465592Z             {
2026-06-22T01:34:20.3465698Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:34:20.3465791Z               "line": 88
2026-06-22T01:34:20.3465872Z             },
2026-06-22T01:34:20.3465953Z             {
2026-06-22T01:34:20.3466072Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:34:20.3466161Z               "line": 104
2026-06-22T01:34:20.3466241Z             },
2026-06-22T01:34:20.3466333Z             {
2026-06-22T01:34:20.3466451Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3466532Z               "line": 297
2026-06-22T01:34:20.3466623Z             },
2026-06-22T01:34:20.3466695Z             {
2026-06-22T01:34:20.3466818Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3466904Z               "line": 332
2026-06-22T01:34:20.3466986Z             },
2026-06-22T01:34:20.3467072Z             {
2026-06-22T01:34:20.3467185Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3467282Z               "line": 523
2026-06-22T01:34:20.3467363Z             },
2026-06-22T01:34:20.3467443Z             {
2026-06-22T01:34:20.3467548Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3467639Z               "line": 546
2026-06-22T01:34:20.3467729Z             },
2026-06-22T01:34:20.3467806Z             {
2026-06-22T01:34:20.3467926Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3468011Z               "line": 561
2026-06-22T01:34:20.3468102Z             },
2026-06-22T01:34:20.3468173Z             {
2026-06-22T01:34:20.3468278Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.3468368Z               "line": 492
2026-06-22T01:34:20.3468450Z             }
2026-06-22T01:34:20.3468536Z           ]
2026-06-22T01:34:20.3468608Z         },
2026-06-22T01:34:20.3468692Z         "int": {
2026-06-22T01:34:20.3468777Z           "complete": false,
2026-06-22T01:34:20.3468873Z           "evidence": []
2026-06-22T01:34:20.3469028Z         },
2026-06-22T01:34:20.3469103Z         "unit": {
2026-06-22T01:34:20.3469195Z           "complete": true,
2026-06-22T01:34:20.3469272Z           "evidence": [
2026-06-22T01:34:20.3469357Z             {
2026-06-22T01:34:20.3469476Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3469563Z               "line": 799
2026-06-22T01:34:20.3469639Z             },
2026-06-22T01:34:20.3469719Z             {
2026-06-22T01:34:20.3469839Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3469925Z               "line": 811
2026-06-22T01:34:20.3470010Z             },
2026-06-22T01:34:20.3470091Z             {
2026-06-22T01:34:20.3470216Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.3470311Z               "line": 820
2026-06-22T01:34:20.3470391Z             }
2026-06-22T01:34:20.3470474Z           ]
2026-06-22T01:34:20.3470564Z         }
2026-06-22T01:34:20.3470639Z       }
2026-06-22T01:34:20.3470706Z     },
2026-06-22T01:34:20.3470798Z     {
2026-06-22T01:34:20.3470888Z       "id": "REQ-INSTALL-12",
2026-06-22T01:34:20.3473506Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-22T01:34:20.3473811Z       "requiredStages": [
2026-06-22T01:34:20.3473897Z         "doc",
2026-06-22T01:34:20.3473980Z         "impl",
2026-06-22T01:34:20.3474061Z         "unit",
2026-06-22T01:34:20.3474140Z         "int"
2026-06-22T01:34:20.3474249Z       ],
2026-06-22T01:34:20.3474335Z       "stages": {
2026-06-22T01:34:20.3474422Z         "doc": {
2026-06-22T01:34:20.3474545Z           "complete": true,
2026-06-22T01:34:20.3474636Z           "evidence": [
2026-06-22T01:34:20.3474722Z             {
2026-06-22T01:34:20.3474816Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3474907Z               "line": 185
2026-06-22T01:34:20.3474990Z             }
2026-06-22T01:34:20.3475065Z           ]
2026-06-22T01:34:20.3475150Z         },
2026-06-22T01:34:20.3475232Z         "impl": {
2026-06-22T01:34:20.3475323Z           "complete": true,
2026-06-22T01:34:20.3475408Z           "evidence": [
2026-06-22T01:34:20.3475493Z             {
2026-06-22T01:34:20.3475619Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3475703Z               "line": 27
2026-06-22T01:34:20.3475789Z             },
2026-06-22T01:34:20.3475871Z             {
2026-06-22T01:34:20.3475990Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3476070Z               "line": 223
2026-06-22T01:34:20.3476152Z             },
2026-06-22T01:34:20.3476244Z             {
2026-06-22T01:34:20.3476347Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3476442Z               "line": 5677
2026-06-22T01:34:20.3476523Z             }
2026-06-22T01:34:20.3476604Z           ]
2026-06-22T01:34:20.3476683Z         },
2026-06-22T01:34:20.3476778Z         "int": {
2026-06-22T01:34:20.3476873Z           "complete": true,
2026-06-22T01:34:20.3476960Z           "evidence": [
2026-06-22T01:34:20.3477040Z             {
2026-06-22T01:34:20.3477160Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T01:34:20.3477251Z               "line": 19
2026-06-22T01:34:20.3477331Z             }
2026-06-22T01:34:20.3477412Z           ]
2026-06-22T01:34:20.3477498Z         },
2026-06-22T01:34:20.3477580Z         "unit": {
2026-06-22T01:34:20.3477674Z           "complete": true,
2026-06-22T01:34:20.3477760Z           "evidence": [
2026-06-22T01:34:20.3477842Z             {
2026-06-22T01:34:20.3477951Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3478046Z               "line": 395
2026-06-22T01:34:20.3478123Z             },
2026-06-22T01:34:20.3478204Z             {
2026-06-22T01:34:20.3478323Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3478413Z               "line": 421
2026-06-22T01:34:20.3478496Z             },
2026-06-22T01:34:20.3478580Z             {
2026-06-22T01:34:20.3478695Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3478787Z               "line": 440
2026-06-22T01:34:20.3478867Z             },
2026-06-22T01:34:20.3479024Z             {
2026-06-22T01:34:20.3479130Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3479215Z               "line": 475
2026-06-22T01:34:20.3479300Z             },
2026-06-22T01:34:20.3479385Z             {
2026-06-22T01:34:20.3479490Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3479687Z               "line": 8665
2026-06-22T01:34:20.3479774Z             }
2026-06-22T01:34:20.3479945Z           ]
2026-06-22T01:34:20.3480017Z         }
2026-06-22T01:34:20.3480099Z       }
2026-06-22T01:34:20.3480184Z     },
2026-06-22T01:34:20.3480265Z     {
2026-06-22T01:34:20.3480346Z       "id": "REQ-INSTALL-2",
2026-06-22T01:34:20.3480485Z       "title": "Marketplace-repackaging-friendly install",
2026-06-22T01:34:20.3480570Z       "requiredStages": [
2026-06-22T01:34:20.3480651Z         "doc"
2026-06-22T01:34:20.3480733Z       ],
2026-06-22T01:34:20.3480813Z       "stages": {
2026-06-22T01:34:20.3480899Z         "doc": {
2026-06-22T01:34:20.3480985Z           "complete": true,
2026-06-22T01:34:20.3481067Z           "evidence": [
2026-06-22T01:34:20.3481147Z             {
2026-06-22T01:34:20.3481238Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3481324Z               "line": 755
2026-06-22T01:34:20.3481410Z             }
2026-06-22T01:34:20.3481509Z           ]
2026-06-22T01:34:20.3481581Z         },
2026-06-22T01:34:20.3481668Z         "impl": {
2026-06-22T01:34:20.3481768Z           "complete": false,
2026-06-22T01:34:20.3481856Z           "evidence": []
2026-06-22T01:34:20.3481942Z         },
2026-06-22T01:34:20.3482023Z         "int": {
2026-06-22T01:34:20.3482113Z           "complete": false,
2026-06-22T01:34:20.3482188Z           "evidence": []
2026-06-22T01:34:20.3482269Z         },
2026-06-22T01:34:20.3482355Z         "unit": {
2026-06-22T01:34:20.3482442Z           "complete": false,
2026-06-22T01:34:20.3482531Z           "evidence": []
2026-06-22T01:34:20.3482612Z         }
2026-06-22T01:34:20.3482690Z       }
2026-06-22T01:34:20.3482771Z     },
2026-06-22T01:34:20.3482850Z     {
2026-06-22T01:34:20.3482937Z       "id": "REQ-INSTALL-3",
2026-06-22T01:34:20.3483075Z       "title": "Idempotent + interactive-optional first run",
2026-06-22T01:34:20.3483160Z       "requiredStages": [
2026-06-22T01:34:20.3483242Z         "impl",
2026-06-22T01:34:20.3483328Z         "int"
2026-06-22T01:34:20.3483413Z       ],
2026-06-22T01:34:20.3483504Z       "stages": {
2026-06-22T01:34:20.3483596Z         "doc": {
2026-06-22T01:34:20.3483676Z           "complete": false,
2026-06-22T01:34:20.3483767Z           "evidence": []
2026-06-22T01:34:20.3483847Z         },
2026-06-22T01:34:20.3483934Z         "impl": {
2026-06-22T01:34:20.3484019Z           "complete": true,
2026-06-22T01:34:20.3484105Z           "evidence": [
2026-06-22T01:34:20.3484191Z             {
2026-06-22T01:34:20.3484292Z               "path": "installer/install.ps1",
2026-06-22T01:34:20.3484381Z               "line": 100
2026-06-22T01:34:20.3484457Z             },
2026-06-22T01:34:20.3484545Z             {
2026-06-22T01:34:20.3484649Z               "path": "installer/install.ps1",
2026-06-22T01:34:20.3484738Z               "line": 111
2026-06-22T01:34:20.3484814Z             },
2026-06-22T01:34:20.3484900Z             {
2026-06-22T01:34:20.3484997Z               "path": "installer/install.sh",
2026-06-22T01:34:20.3485095Z               "line": 79
2026-06-22T01:34:20.3485187Z             }
2026-06-22T01:34:20.3485258Z           ]
2026-06-22T01:34:20.3485344Z         },
2026-06-22T01:34:20.3485429Z         "int": {
2026-06-22T01:34:20.3485521Z           "complete": true,
2026-06-22T01:34:20.3485601Z           "evidence": [
2026-06-22T01:34:20.3485687Z             {
2026-06-22T01:34:20.3485797Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T01:34:20.3485883Z               "line": 167
2026-06-22T01:34:20.3485963Z             }
2026-06-22T01:34:20.3486044Z           ]
2026-06-22T01:34:20.3486131Z         },
2026-06-22T01:34:20.3486212Z         "unit": {
2026-06-22T01:34:20.3486312Z           "complete": false,
2026-06-22T01:34:20.3486407Z           "evidence": []
2026-06-22T01:34:20.3486489Z         }
2026-06-22T01:34:20.3486569Z       }
2026-06-22T01:34:20.3486645Z     },
2026-06-22T01:34:20.3486727Z     {
2026-06-22T01:34:20.3486818Z       "id": "REQ-INSTALL-4",
2026-06-22T01:34:20.3487515Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-22T01:34:20.3487676Z       "requiredStages": [
2026-06-22T01:34:20.3487763Z         "impl",
2026-06-22T01:34:20.3487844Z         "unit"
2026-06-22T01:34:20.3487924Z       ],
2026-06-22T01:34:20.3488014Z       "stages": {
2026-06-22T01:34:20.3488097Z         "doc": {
2026-06-22T01:34:20.3488192Z           "complete": false,
2026-06-22T01:34:20.3488272Z           "evidence": []
2026-06-22T01:34:20.3488359Z         },
2026-06-22T01:34:20.3488445Z         "impl": {
2026-06-22T01:34:20.3488531Z           "complete": true,
2026-06-22T01:34:20.3488611Z           "evidence": [
2026-06-22T01:34:20.3488693Z             {
2026-06-22T01:34:20.3488821Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.3488911Z               "line": 165
2026-06-22T01:34:20.3489075Z             },
2026-06-22T01:34:20.3489164Z             {
2026-06-22T01:34:20.3489274Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3489366Z               "line": 29
2026-06-22T01:34:20.3489450Z             },
2026-06-22T01:34:20.3489531Z             {
2026-06-22T01:34:20.3489652Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3489728Z               "line": 288
2026-06-22T01:34:20.3489817Z             },
2026-06-22T01:34:20.3489897Z             {
2026-06-22T01:34:20.3490017Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3490124Z               "line": 356
2026-06-22T01:34:20.3490205Z             },
2026-06-22T01:34:20.3490291Z             {
2026-06-22T01:34:20.3490406Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3490491Z               "line": 386
2026-06-22T01:34:20.3490557Z             },
2026-06-22T01:34:20.3490650Z             {
2026-06-22T01:34:20.3490778Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3490868Z               "line": 434
2026-06-22T01:34:20.3490960Z             },
2026-06-22T01:34:20.3491030Z             {
2026-06-22T01:34:20.3491149Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3491231Z               "line": 5396
2026-06-22T01:34:20.3491321Z             }
2026-06-22T01:34:20.3491407Z           ]
2026-06-22T01:34:20.3491488Z         },
2026-06-22T01:34:20.3491569Z         "int": {
2026-06-22T01:34:20.3491660Z           "complete": false,
2026-06-22T01:34:20.3491755Z           "evidence": []
2026-06-22T01:34:20.3491831Z         },
2026-06-22T01:34:20.3491918Z         "unit": {
2026-06-22T01:34:20.3492008Z           "complete": true,
2026-06-22T01:34:20.3492093Z           "evidence": [
2026-06-22T01:34:20.3492180Z             {
2026-06-22T01:34:20.3492304Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.3492403Z               "line": 375
2026-06-22T01:34:20.3492483Z             },
2026-06-22T01:34:20.3492565Z             {
2026-06-22T01:34:20.3492673Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3492757Z               "line": 808
2026-06-22T01:34:20.3492838Z             },
2026-06-22T01:34:20.3492910Z             {
2026-06-22T01:34:20.3493030Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3493119Z               "line": 849
2026-06-22T01:34:20.3493202Z             },
2026-06-22T01:34:20.3493288Z             {
2026-06-22T01:34:20.3493396Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3493478Z               "line": 869
2026-06-22T01:34:20.3493559Z             },
2026-06-22T01:34:20.3493645Z             {
2026-06-22T01:34:20.3493749Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3493837Z               "line": 8403
2026-06-22T01:34:20.3493926Z             }
2026-06-22T01:34:20.3494003Z           ]
2026-06-22T01:34:20.3494088Z         }
2026-06-22T01:34:20.3494293Z       }
2026-06-22T01:34:20.3494383Z     },
2026-06-22T01:34:20.3494461Z     {
2026-06-22T01:34:20.3494646Z       "id": "REQ-INSTALL-5",
2026-06-22T01:34:20.3495115Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-22T01:34:20.3495204Z       "requiredStages": [
2026-06-22T01:34:20.3495289Z         "impl",
2026-06-22T01:34:20.3495379Z         "int"
2026-06-22T01:34:20.3495460Z       ],
2026-06-22T01:34:20.3495547Z       "stages": {
2026-06-22T01:34:20.3495627Z         "doc": {
2026-06-22T01:34:20.3495712Z           "complete": false,
2026-06-22T01:34:20.3495800Z           "evidence": []
2026-06-22T01:34:20.3495886Z         },
2026-06-22T01:34:20.3495970Z         "impl": {
2026-06-22T01:34:20.3496067Z           "complete": true,
2026-06-22T01:34:20.3496148Z           "evidence": [
2026-06-22T01:34:20.3496238Z             {
2026-06-22T01:34:20.3496347Z               "path": "installer/install.ps1",
2026-06-22T01:34:20.3496429Z               "line": 5
2026-06-22T01:34:20.3496528Z             },
2026-06-22T01:34:20.3496613Z             {
2026-06-22T01:34:20.3496720Z               "path": "installer/install.sh",
2026-06-22T01:34:20.3496810Z               "line": 6
2026-06-22T01:34:20.3496891Z             }
2026-06-22T01:34:20.3496977Z           ]
2026-06-22T01:34:20.3497049Z         },
2026-06-22T01:34:20.3497134Z         "int": {
2026-06-22T01:34:20.3497225Z           "complete": true,
2026-06-22T01:34:20.3497315Z           "evidence": [
2026-06-22T01:34:20.3497388Z             {
2026-06-22T01:34:20.3497500Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T01:34:20.3497591Z               "line": 22
2026-06-22T01:34:20.3497672Z             }
2026-06-22T01:34:20.3497757Z           ]
2026-06-22T01:34:20.3497831Z         },
2026-06-22T01:34:20.3497912Z         "unit": {
2026-06-22T01:34:20.3497994Z           "complete": false,
2026-06-22T01:34:20.3498095Z           "evidence": []
2026-06-22T01:34:20.3498184Z         }
2026-06-22T01:34:20.3498275Z       }
2026-06-22T01:34:20.3498362Z     },
2026-06-22T01:34:20.3498447Z     {
2026-06-22T01:34:20.3498537Z       "id": "REQ-INSTALL-6",
2026-06-22T01:34:20.3499796Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-22T01:34:20.3499897Z       "requiredStages": [
2026-06-22T01:34:20.3499978Z         "impl",
2026-06-22T01:34:20.3500067Z         "unit"
2026-06-22T01:34:20.3500149Z       ],
2026-06-22T01:34:20.3500236Z       "stages": {
2026-06-22T01:34:20.3500330Z         "doc": {
2026-06-22T01:34:20.3500415Z           "complete": false,
2026-06-22T01:34:20.3500515Z           "evidence": []
2026-06-22T01:34:20.3500601Z         },
2026-06-22T01:34:20.3500685Z         "impl": {
2026-06-22T01:34:20.3500770Z           "complete": true,
2026-06-22T01:34:20.3500856Z           "evidence": [
2026-06-22T01:34:20.3500928Z             {
2026-06-22T01:34:20.3501051Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3501137Z               "line": 61
2026-06-22T01:34:20.3501220Z             },
2026-06-22T01:34:20.3501300Z             {
2026-06-22T01:34:20.3501423Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.3501505Z               "line": 641
2026-06-22T01:34:20.3501590Z             },
2026-06-22T01:34:20.3501667Z             {
2026-06-22T01:34:20.3501781Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.3501863Z               "line": 191
2026-06-22T01:34:20.3501943Z             },
2026-06-22T01:34:20.3502024Z             {
2026-06-22T01:34:20.3502139Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.3502334Z               "line": 276
2026-06-22T01:34:20.3502502Z             },
2026-06-22T01:34:20.3502582Z             {
2026-06-22T01:34:20.3502692Z               "path": "crates/spt/src/main.rs",
2026-06-22T01:34:20.3502774Z               "line": 43
2026-06-22T01:34:20.3502859Z             },
2026-06-22T01:34:20.3502954Z             {
2026-06-22T01:34:20.3503057Z               "path": "installer/install.sh",
2026-06-22T01:34:20.3503144Z               "line": 104
2026-06-22T01:34:20.3503223Z             }
2026-06-22T01:34:20.3503304Z           ]
2026-06-22T01:34:20.3503384Z         },
2026-06-22T01:34:20.3503466Z         "int": {
2026-06-22T01:34:20.3503552Z           "complete": false,
2026-06-22T01:34:20.3503642Z           "evidence": []
2026-06-22T01:34:20.3503728Z         },
2026-06-22T01:34:20.3503814Z         "unit": {
2026-06-22T01:34:20.3503909Z           "complete": true,
2026-06-22T01:34:20.3503985Z           "evidence": [
2026-06-22T01:34:20.3504077Z             {
2026-06-22T01:34:20.3504200Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:34:20.3504295Z               "line": 894
2026-06-22T01:34:20.3504382Z             }
2026-06-22T01:34:20.3504462Z           ]
2026-06-22T01:34:20.3504553Z         }
2026-06-22T01:34:20.3504633Z       }
2026-06-22T01:34:20.3504716Z     },
2026-06-22T01:34:20.3504806Z     {
2026-06-22T01:34:20.3504896Z       "id": "REQ-INSTALL-7",
2026-06-22T01:34:20.3505997Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-22T01:34:20.3506098Z       "requiredStages": [
2026-06-22T01:34:20.3506187Z         "impl"
2026-06-22T01:34:20.3506277Z       ],
2026-06-22T01:34:20.3506374Z       "stages": {
2026-06-22T01:34:20.3506460Z         "doc": {
2026-06-22T01:34:20.3506549Z           "complete": false,
2026-06-22T01:34:20.3506655Z           "evidence": []
2026-06-22T01:34:20.3506741Z         },
2026-06-22T01:34:20.3506831Z         "impl": {
2026-06-22T01:34:20.3506926Z           "complete": true,
2026-06-22T01:34:20.3507013Z           "evidence": [
2026-06-22T01:34:20.3507093Z             {
2026-06-22T01:34:20.3507198Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3507285Z               "line": 3920
2026-06-22T01:34:20.3507370Z             },
2026-06-22T01:34:20.3507456Z             {
2026-06-22T01:34:20.3507551Z               "path": "installer/install.ps1",
2026-06-22T01:34:20.3507628Z               "line": 157
2026-06-22T01:34:20.3507718Z             }
2026-06-22T01:34:20.3507794Z           ]
2026-06-22T01:34:20.3507880Z         },
2026-06-22T01:34:20.3507967Z         "int": {
2026-06-22T01:34:20.3508061Z           "complete": false,
2026-06-22T01:34:20.3508160Z           "evidence": []
2026-06-22T01:34:20.3508232Z         },
2026-06-22T01:34:20.3508322Z         "unit": {
2026-06-22T01:34:20.3508415Z           "complete": false,
2026-06-22T01:34:20.3508520Z           "evidence": []
2026-06-22T01:34:20.3508602Z         }
2026-06-22T01:34:20.3508697Z       }
2026-06-22T01:34:20.3508777Z     },
2026-06-22T01:34:20.3508859Z     {
2026-06-22T01:34:20.3509012Z       "id": "REQ-INSTALL-8",
2026-06-22T01:34:20.3510036Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-22T01:34:20.3510133Z       "requiredStages": [
2026-06-22T01:34:20.3510214Z         "impl"
2026-06-22T01:34:20.3510404Z       ],
2026-06-22T01:34:20.3510491Z       "stages": {
2026-06-22T01:34:20.3510567Z         "doc": {
2026-06-22T01:34:20.3510743Z           "complete": false,
2026-06-22T01:34:20.3510834Z           "evidence": []
2026-06-22T01:34:20.3510919Z         },
2026-06-22T01:34:20.3511004Z         "impl": {
2026-06-22T01:34:20.3511085Z           "complete": true,
2026-06-22T01:34:20.3511166Z           "evidence": [
2026-06-22T01:34:20.3511250Z             {
2026-06-22T01:34:20.3511354Z               "path": "installer/install.ps1",
2026-06-22T01:34:20.3511440Z               "line": 184
2026-06-22T01:34:20.3511522Z             },
2026-06-22T01:34:20.3511602Z             {
2026-06-22T01:34:20.3511702Z               "path": "installer/install.sh",
2026-06-22T01:34:20.3511789Z               "line": 121
2026-06-22T01:34:20.3511870Z             }
2026-06-22T01:34:20.3511954Z           ]
2026-06-22T01:34:20.3512031Z         },
2026-06-22T01:34:20.3512118Z         "int": {
2026-06-22T01:34:20.3512204Z           "complete": false,
2026-06-22T01:34:20.3512298Z           "evidence": []
2026-06-22T01:34:20.3512380Z         },
2026-06-22T01:34:20.3512466Z         "unit": {
2026-06-22T01:34:20.3512565Z           "complete": false,
2026-06-22T01:34:20.3512651Z           "evidence": []
2026-06-22T01:34:20.3512733Z         }
2026-06-22T01:34:20.3512822Z       }
2026-06-22T01:34:20.3512903Z     },
2026-06-22T01:34:20.3512990Z     {
2026-06-22T01:34:20.3513077Z       "id": "REQ-INSTALL-9",
2026-06-22T01:34:20.3514274Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-22T01:34:20.3514379Z       "requiredStages": [
2026-06-22T01:34:20.3514460Z         "doc",
2026-06-22T01:34:20.3514559Z         "impl",
2026-06-22T01:34:20.3514642Z         "unit"
2026-06-22T01:34:20.3514727Z       ],
2026-06-22T01:34:20.3514822Z       "stages": {
2026-06-22T01:34:20.3514913Z         "doc": {
2026-06-22T01:34:20.3515008Z           "complete": true,
2026-06-22T01:34:20.3515094Z           "evidence": [
2026-06-22T01:34:20.3515180Z             {
2026-06-22T01:34:20.3515266Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3515351Z               "line": 771
2026-06-22T01:34:20.3515437Z             }
2026-06-22T01:34:20.3515518Z           ]
2026-06-22T01:34:20.3515610Z         },
2026-06-22T01:34:20.3515699Z         "impl": {
2026-06-22T01:34:20.3515790Z           "complete": true,
2026-06-22T01:34:20.3515862Z           "evidence": [
2026-06-22T01:34:20.3515953Z             {
2026-06-22T01:34:20.3516061Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3516254Z               "line": 2535
2026-06-22T01:34:20.3516343Z             },
2026-06-22T01:34:20.3516428Z             {
2026-06-22T01:34:20.3516547Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3516643Z               "line": 2559
2026-06-22T01:34:20.3516729Z             }
2026-06-22T01:34:20.3516804Z           ]
2026-06-22T01:34:20.3516891Z         },
2026-06-22T01:34:20.3516982Z         "int": {
2026-06-22T01:34:20.3517067Z           "complete": false,
2026-06-22T01:34:20.3517153Z           "evidence": []
2026-06-22T01:34:20.3517234Z         },
2026-06-22T01:34:20.3517325Z         "unit": {
2026-06-22T01:34:20.3517410Z           "complete": true,
2026-06-22T01:34:20.3517496Z           "evidence": [
2026-06-22T01:34:20.3517582Z             {
2026-06-22T01:34:20.3517678Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3517767Z               "line": 7591
2026-06-22T01:34:20.3517855Z             },
2026-06-22T01:34:20.3517940Z             {
2026-06-22T01:34:20.3518040Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3518121Z               "line": 8433
2026-06-22T01:34:20.3518283Z             }
2026-06-22T01:34:20.3518364Z           ]
2026-06-22T01:34:20.3518450Z         }
2026-06-22T01:34:20.3518612Z       }
2026-06-22T01:34:20.3518687Z     },
2026-06-22T01:34:20.3518768Z     {
2026-06-22T01:34:20.3518859Z       "id": "REQ-KICK-1",
2026-06-22T01:34:20.3521399Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-22T01:34:20.3521516Z       "requiredStages": [
2026-06-22T01:34:20.3521602Z         "doc",
2026-06-22T01:34:20.3521692Z         "impl",
2026-06-22T01:34:20.3521773Z         "unit",
2026-06-22T01:34:20.3521852Z         "int"
2026-06-22T01:34:20.3521938Z       ],
2026-06-22T01:34:20.3522019Z       "stages": {
2026-06-22T01:34:20.3522101Z         "doc": {
2026-06-22T01:34:20.3522190Z           "complete": true,
2026-06-22T01:34:20.3522281Z           "evidence": [
2026-06-22T01:34:20.3522364Z             {
2026-06-22T01:34:20.3522459Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3522543Z               "line": 342
2026-06-22T01:34:20.3522621Z             }
2026-06-22T01:34:20.3522702Z           ]
2026-06-22T01:34:20.3522792Z         },
2026-06-22T01:34:20.3522872Z         "impl": {
2026-06-22T01:34:20.3522959Z           "complete": true,
2026-06-22T01:34:20.3523058Z           "evidence": [
2026-06-22T01:34:20.3523139Z             {
2026-06-22T01:34:20.3523265Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:34:20.3523364Z               "line": 41
2026-06-22T01:34:20.3523450Z             },
2026-06-22T01:34:20.3523536Z             {
2026-06-22T01:34:20.3523637Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.3523730Z               "line": 701
2026-06-22T01:34:20.3523807Z             }
2026-06-22T01:34:20.3523899Z           ]
2026-06-22T01:34:20.3523980Z         },
2026-06-22T01:34:20.3524064Z         "int": {
2026-06-22T01:34:20.3524149Z           "complete": true,
2026-06-22T01:34:20.3524235Z           "evidence": [
2026-06-22T01:34:20.3524325Z             {
2026-06-22T01:34:20.3524447Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.3524534Z               "line": 916
2026-06-22T01:34:20.3524615Z             }
2026-06-22T01:34:20.3524700Z           ]
2026-06-22T01:34:20.3524791Z         },
2026-06-22T01:34:20.3524877Z         "unit": {
2026-06-22T01:34:20.3524963Z           "complete": true,
2026-06-22T01:34:20.3525057Z           "evidence": [
2026-06-22T01:34:20.3525143Z             {
2026-06-22T01:34:20.3525249Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:34:20.3525335Z               "line": 205
2026-06-22T01:34:20.3525415Z             }
2026-06-22T01:34:20.3525497Z           ]
2026-06-22T01:34:20.3525583Z         }
2026-06-22T01:34:20.3525664Z       }
2026-06-22T01:34:20.3525749Z     },
2026-06-22T01:34:20.3525831Z     {
2026-06-22T01:34:20.3525940Z       "id": "REQ-MANIFEST-1",
2026-06-22T01:34:20.3526127Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-22T01:34:20.3526222Z       "requiredStages": [
2026-06-22T01:34:20.3526312Z         "doc",
2026-06-22T01:34:20.3526398Z         "impl",
2026-06-22T01:34:20.3526485Z         "unit"
2026-06-22T01:34:20.3526574Z       ],
2026-06-22T01:34:20.3526660Z       "stages": {
2026-06-22T01:34:20.3526861Z         "doc": {
2026-06-22T01:34:20.3526950Z           "complete": true,
2026-06-22T01:34:20.3527136Z           "evidence": [
2026-06-22T01:34:20.3527213Z             {
2026-06-22T01:34:20.3527322Z               "path": "docs/MANIFEST.md",
2026-06-22T01:34:20.3527398Z               "line": 19
2026-06-22T01:34:20.3527485Z             }
2026-06-22T01:34:20.3527570Z           ]
2026-06-22T01:34:20.3527651Z         },
2026-06-22T01:34:20.3530638Z         "impl": {
2026-06-22T01:34:20.3530761Z           "complete": true,
2026-06-22T01:34:20.3530861Z           "evidence": [
2026-06-22T01:34:20.3530948Z             {
2026-06-22T01:34:20.3531076Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3531162Z               "line": 18
2026-06-22T01:34:20.3531248Z             }
2026-06-22T01:34:20.3531325Z           ]
2026-06-22T01:34:20.3531410Z         },
2026-06-22T01:34:20.3531486Z         "int": {
2026-06-22T01:34:20.3531573Z           "complete": false,
2026-06-22T01:34:20.3531682Z           "evidence": []
2026-06-22T01:34:20.3531767Z         },
2026-06-22T01:34:20.3531849Z         "unit": {
2026-06-22T01:34:20.3531945Z           "complete": true,
2026-06-22T01:34:20.3532025Z           "evidence": [
2026-06-22T01:34:20.3532114Z             {
2026-06-22T01:34:20.3532239Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3532328Z               "line": 1029
2026-06-22T01:34:20.3532412Z             },
2026-06-22T01:34:20.3532498Z             {
2026-06-22T01:34:20.3532618Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3532708Z               "line": 1325
2026-06-22T01:34:20.3532789Z             },
2026-06-22T01:34:20.3532871Z             {
2026-06-22T01:34:20.3532995Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3533079Z               "line": 1337
2026-06-22T01:34:20.3533161Z             },
2026-06-22T01:34:20.3533243Z             {
2026-06-22T01:34:20.3533357Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3533452Z               "line": 1348
2026-06-22T01:34:20.3533538Z             },
2026-06-22T01:34:20.3533619Z             {
2026-06-22T01:34:20.3533738Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3533820Z               "line": 1365
2026-06-22T01:34:20.3533906Z             },
2026-06-22T01:34:20.3533985Z             {
2026-06-22T01:34:20.3534105Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3534192Z               "line": 1379
2026-06-22T01:34:20.3534267Z             },
2026-06-22T01:34:20.3534339Z             {
2026-06-22T01:34:20.3534460Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3534550Z               "line": 1495
2026-06-22T01:34:20.3534619Z             },
2026-06-22T01:34:20.3534705Z             {
2026-06-22T01:34:20.3534819Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3534909Z               "line": 1510
2026-06-22T01:34:20.3535012Z             },
2026-06-22T01:34:20.3535099Z             {
2026-06-22T01:34:20.3535209Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3535294Z               "line": 1621
2026-06-22T01:34:20.3535379Z             },
2026-06-22T01:34:20.3535471Z             {
2026-06-22T01:34:20.3535571Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3535665Z               "line": 1632
2026-06-22T01:34:20.3535747Z             }
2026-06-22T01:34:20.3535828Z           ]
2026-06-22T01:34:20.3535909Z         }
2026-06-22T01:34:20.3535994Z       }
2026-06-22T01:34:20.3536081Z     },
2026-06-22T01:34:20.3536162Z     {
2026-06-22T01:34:20.3536261Z       "id": "REQ-MANIFEST-2",
2026-06-22T01:34:20.3536796Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-22T01:34:20.3536891Z       "requiredStages": [
2026-06-22T01:34:20.3537116Z         "doc",
2026-06-22T01:34:20.3537206Z         "impl",
2026-06-22T01:34:20.3537287Z         "unit"
2026-06-22T01:34:20.3537473Z       ],
2026-06-22T01:34:20.3537553Z       "stages": {
2026-06-22T01:34:20.3537634Z         "doc": {
2026-06-22T01:34:20.3537725Z           "complete": true,
2026-06-22T01:34:20.3537815Z           "evidence": [
2026-06-22T01:34:20.3537896Z             {
2026-06-22T01:34:20.3537987Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3538069Z               "line": 75
2026-06-22T01:34:20.3538154Z             }
2026-06-22T01:34:20.3538234Z           ]
2026-06-22T01:34:20.3538317Z         },
2026-06-22T01:34:20.3538397Z         "impl": {
2026-06-22T01:34:20.3538492Z           "complete": true,
2026-06-22T01:34:20.3538573Z           "evidence": [
2026-06-22T01:34:20.3538656Z             {
2026-06-22T01:34:20.3538779Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3538869Z               "line": 82
2026-06-22T01:34:20.3539046Z             },
2026-06-22T01:34:20.3539117Z             {
2026-06-22T01:34:20.3539237Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3539328Z               "line": 15
2026-06-22T01:34:20.3539407Z             },
2026-06-22T01:34:20.3539494Z             {
2026-06-22T01:34:20.3539605Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3539685Z               "line": 65
2026-06-22T01:34:20.3539770Z             },
2026-06-22T01:34:20.3539850Z             {
2026-06-22T01:34:20.3539969Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3540053Z               "line": 83
2026-06-22T01:34:20.3540134Z             },
2026-06-22T01:34:20.3540205Z             {
2026-06-22T01:34:20.3540321Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3540401Z               "line": 183
2026-06-22T01:34:20.3540481Z             },
2026-06-22T01:34:20.3540554Z             {
2026-06-22T01:34:20.3540668Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3540754Z               "line": 527
2026-06-22T01:34:20.3540844Z             },
2026-06-22T01:34:20.3540921Z             {
2026-06-22T01:34:20.3541035Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3541120Z               "line": 553
2026-06-22T01:34:20.3541208Z             },
2026-06-22T01:34:20.3541284Z             {
2026-06-22T01:34:20.3541402Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3541488Z               "line": 671
2026-06-22T01:34:20.3541565Z             },
2026-06-22T01:34:20.3541650Z             {
2026-06-22T01:34:20.3541764Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3541852Z               "line": 696
2026-06-22T01:34:20.3541932Z             },
2026-06-22T01:34:20.3542018Z             {
2026-06-22T01:34:20.3542128Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3542209Z               "line": 719
2026-06-22T01:34:20.3542299Z             },
2026-06-22T01:34:20.3542375Z             {
2026-06-22T01:34:20.3542496Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3542585Z               "line": 734
2026-06-22T01:34:20.3542669Z             },
2026-06-22T01:34:20.3542755Z             {
2026-06-22T01:34:20.3542865Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3542949Z               "line": 5567
2026-06-22T01:34:20.3543029Z             },
2026-06-22T01:34:20.3543111Z             {
2026-06-22T01:34:20.3543207Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3543297Z               "line": 5581
2026-06-22T01:34:20.3543368Z             },
2026-06-22T01:34:20.3543450Z             {
2026-06-22T01:34:20.3543550Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3543626Z               "line": 5615
2026-06-22T01:34:20.3543707Z             }
2026-06-22T01:34:20.3543789Z           ]
2026-06-22T01:34:20.3543869Z         },
2026-06-22T01:34:20.3544055Z         "int": {
2026-06-22T01:34:20.3544156Z           "complete": false,
2026-06-22T01:34:20.3544237Z           "evidence": []
2026-06-22T01:34:20.3544409Z         },
2026-06-22T01:34:20.3544499Z         "unit": {
2026-06-22T01:34:20.3544589Z           "complete": true,
2026-06-22T01:34:20.3544675Z           "evidence": [
2026-06-22T01:34:20.3544757Z             {
2026-06-22T01:34:20.3544879Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.3544966Z               "line": 921
2026-06-22T01:34:20.3545048Z             },
2026-06-22T01:34:20.3545133Z             {
2026-06-22T01:34:20.3545251Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3545351Z               "line": 211
2026-06-22T01:34:20.3545432Z             },
2026-06-22T01:34:20.3545511Z             {
2026-06-22T01:34:20.3545629Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3545716Z               "line": 272
2026-06-22T01:34:20.3545803Z             },
2026-06-22T01:34:20.3545882Z             {
2026-06-22T01:34:20.3545993Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3546083Z               "line": 313
2026-06-22T01:34:20.3546169Z             },
2026-06-22T01:34:20.3546254Z             {
2026-06-22T01:34:20.3546370Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3546455Z               "line": 325
2026-06-22T01:34:20.3546540Z             },
2026-06-22T01:34:20.3546627Z             {
2026-06-22T01:34:20.3546736Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3546826Z               "line": 336
2026-06-22T01:34:20.3546907Z             },
2026-06-22T01:34:20.3546985Z             {
2026-06-22T01:34:20.3547094Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3547179Z               "line": 345
2026-06-22T01:34:20.3547266Z             },
2026-06-22T01:34:20.3547352Z             {
2026-06-22T01:34:20.3547466Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3547562Z               "line": 361
2026-06-22T01:34:20.3547639Z             },
2026-06-22T01:34:20.3547732Z             {
2026-06-22T01:34:20.3547843Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3547939Z               "line": 444
2026-06-22T01:34:20.3548024Z             },
2026-06-22T01:34:20.3548104Z             {
2026-06-22T01:34:20.3548228Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3548309Z               "line": 958
2026-06-22T01:34:20.3548390Z             },
2026-06-22T01:34:20.3548466Z             {
2026-06-22T01:34:20.3548586Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3548677Z               "line": 982
2026-06-22T01:34:20.3548761Z             },
2026-06-22T01:34:20.3548843Z             {
2026-06-22T01:34:20.3549038Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3549124Z               "line": 1008
2026-06-22T01:34:20.3549206Z             },
2026-06-22T01:34:20.3549291Z             {
2026-06-22T01:34:20.3549410Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3549497Z               "line": 1027
2026-06-22T01:34:20.3549582Z             },
2026-06-22T01:34:20.3549658Z             {
2026-06-22T01:34:20.3549777Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3549855Z               "line": 1058
2026-06-22T01:34:20.3549939Z             },
2026-06-22T01:34:20.3550020Z             {
2026-06-22T01:34:20.3550136Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.3550217Z               "line": 309
2026-06-22T01:34:20.3550301Z             },
2026-06-22T01:34:20.3550386Z             {
2026-06-22T01:34:20.3550487Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.3550576Z               "line": 606
2026-06-22T01:34:20.3550661Z             },
2026-06-22T01:34:20.3550741Z             {
2026-06-22T01:34:20.3550942Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3551018Z               "line": 8610
2026-06-22T01:34:20.3551219Z             },
2026-06-22T01:34:20.3551295Z             {
2026-06-22T01:34:20.3551395Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3551486Z               "line": 9558
2026-06-22T01:34:20.3551562Z             }
2026-06-22T01:34:20.3551648Z           ]
2026-06-22T01:34:20.3551729Z         }
2026-06-22T01:34:20.3551815Z       }
2026-06-22T01:34:20.3551901Z     },
2026-06-22T01:34:20.3551981Z     {
2026-06-22T01:34:20.3552083Z       "id": "REQ-MANIFEST-3",
2026-06-22T01:34:20.3552712Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-22T01:34:20.3552807Z       "requiredStages": [
2026-06-22T01:34:20.3552887Z         "doc",
2026-06-22T01:34:20.3552974Z         "impl",
2026-06-22T01:34:20.3553079Z         "unit"
2026-06-22T01:34:20.3553154Z       ],
2026-06-22T01:34:20.3553239Z       "stages": {
2026-06-22T01:34:20.3553325Z         "doc": {
2026-06-22T01:34:20.3553420Z           "complete": true,
2026-06-22T01:34:20.3553504Z           "evidence": [
2026-06-22T01:34:20.3553589Z             {
2026-06-22T01:34:20.3553686Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3553767Z               "line": 81
2026-06-22T01:34:20.3553852Z             }
2026-06-22T01:34:20.3553938Z           ]
2026-06-22T01:34:20.3554024Z         },
2026-06-22T01:34:20.3554110Z         "impl": {
2026-06-22T01:34:20.3554205Z           "complete": true,
2026-06-22T01:34:20.3554296Z           "evidence": [
2026-06-22T01:34:20.3554387Z             {
2026-06-22T01:34:20.3554500Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3554587Z               "line": 92
2026-06-22T01:34:20.3554668Z             },
2026-06-22T01:34:20.3554749Z             {
2026-06-22T01:34:20.3554872Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3554969Z               "line": 101
2026-06-22T01:34:20.3555063Z             },
2026-06-22T01:34:20.3555149Z             {
2026-06-22T01:34:20.3555255Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3555336Z               "line": 132
2026-06-22T01:34:20.3555416Z             },
2026-06-22T01:34:20.3555497Z             {
2026-06-22T01:34:20.3555618Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3555689Z               "line": 577
2026-06-22T01:34:20.3555763Z             },
2026-06-22T01:34:20.3555849Z             {
2026-06-22T01:34:20.3555963Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3556048Z               "line": 633
2026-06-22T01:34:20.3556132Z             },
2026-06-22T01:34:20.3556219Z             {
2026-06-22T01:34:20.3556315Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3556405Z               "line": 5628
2026-06-22T01:34:20.3556485Z             },
2026-06-22T01:34:20.3556558Z             {
2026-06-22T01:34:20.3556653Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3556743Z               "line": 5654
2026-06-22T01:34:20.3556829Z             }
2026-06-22T01:34:20.3556906Z           ]
2026-06-22T01:34:20.3556982Z         },
2026-06-22T01:34:20.3557067Z         "int": {
2026-06-22T01:34:20.3557153Z           "complete": false,
2026-06-22T01:34:20.3557235Z           "evidence": []
2026-06-22T01:34:20.3557320Z         },
2026-06-22T01:34:20.3557405Z         "unit": {
2026-06-22T01:34:20.3557482Z           "complete": true,
2026-06-22T01:34:20.3557574Z           "evidence": [
2026-06-22T01:34:20.3557654Z             {
2026-06-22T01:34:20.3557773Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3557845Z               "line": 371
2026-06-22T01:34:20.3557926Z             },
2026-06-22T01:34:20.3558002Z             {
2026-06-22T01:34:20.3558107Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3558264Z               "line": 429
2026-06-22T01:34:20.3558346Z             },
2026-06-22T01:34:20.3558499Z             {
2026-06-22T01:34:20.3558612Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3558697Z               "line": 1082
2026-06-22T01:34:20.3558783Z             },
2026-06-22T01:34:20.3558864Z             {
2026-06-22T01:34:20.3559054Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3559136Z               "line": 8703
2026-06-22T01:34:20.3559222Z             }
2026-06-22T01:34:20.3559307Z           ]
2026-06-22T01:34:20.3559388Z         }
2026-06-22T01:34:20.3559471Z       }
2026-06-22T01:34:20.3559546Z     },
2026-06-22T01:34:20.3559631Z     {
2026-06-22T01:34:20.3559727Z       "id": "REQ-MANIFEST-4",
2026-06-22T01:34:20.3560415Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-22T01:34:20.3560523Z       "requiredStages": [
2026-06-22T01:34:20.3560609Z         "doc",
2026-06-22T01:34:20.3560696Z         "impl",
2026-06-22T01:34:20.3560782Z         "unit"
2026-06-22T01:34:20.3560866Z       ],
2026-06-22T01:34:20.3560942Z       "stages": {
2026-06-22T01:34:20.3561023Z         "doc": {
2026-06-22T01:34:20.3561113Z           "complete": true,
2026-06-22T01:34:20.3561197Z           "evidence": [
2026-06-22T01:34:20.3561278Z             {
2026-06-22T01:34:20.3561364Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3561451Z               "line": 88
2026-06-22T01:34:20.3561531Z             }
2026-06-22T01:34:20.3561616Z           ]
2026-06-22T01:34:20.3561698Z         },
2026-06-22T01:34:20.3561784Z         "impl": {
2026-06-22T01:34:20.3561879Z           "complete": true,
2026-06-22T01:34:20.3561960Z           "evidence": [
2026-06-22T01:34:20.3562042Z             {
2026-06-22T01:34:20.3562155Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3562250Z               "line": 100
2026-06-22T01:34:20.3562333Z             },
2026-06-22T01:34:20.3562404Z             {
2026-06-22T01:34:20.3562522Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3562594Z               "line": 183
2026-06-22T01:34:20.3562681Z             },
2026-06-22T01:34:20.3562771Z             {
2026-06-22T01:34:20.3562880Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3562972Z               "line": 83
2026-06-22T01:34:20.3563056Z             },
2026-06-22T01:34:20.3563143Z             {
2026-06-22T01:34:20.3563258Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.3563339Z               "line": 629
2026-06-22T01:34:20.3563414Z             },
2026-06-22T01:34:20.3563500Z             {
2026-06-22T01:34:20.3563616Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.3563696Z               "line": 654
2026-06-22T01:34:20.3563786Z             }
2026-06-22T01:34:20.3563871Z           ]
2026-06-22T01:34:20.3563952Z         },
2026-06-22T01:34:20.3564041Z         "int": {
2026-06-22T01:34:20.3564135Z           "complete": false,
2026-06-22T01:34:20.3564226Z           "evidence": []
2026-06-22T01:34:20.3564313Z         },
2026-06-22T01:34:20.3564398Z         "unit": {
2026-06-22T01:34:20.3564478Z           "complete": true,
2026-06-22T01:34:20.3564566Z           "evidence": [
2026-06-22T01:34:20.3564637Z             {
2026-06-22T01:34:20.3564793Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3564895Z               "line": 1445
2026-06-22T01:34:20.3564975Z             },
2026-06-22T01:34:20.3565056Z             {
2026-06-22T01:34:20.3565171Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3565262Z               "line": 1478
2026-06-22T01:34:20.3565347Z             },
2026-06-22T01:34:20.3565432Z             {
2026-06-22T01:34:20.3565553Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.3565743Z               "line": 988
2026-06-22T01:34:20.3565920Z             }
2026-06-22T01:34:20.3566004Z           ]
2026-06-22T01:34:20.3566091Z         }
2026-06-22T01:34:20.3566169Z       }
2026-06-22T01:34:20.3566253Z     },
2026-06-22T01:34:20.3566338Z     {
2026-06-22T01:34:20.3566428Z       "id": "REQ-MANIFEST-5",
2026-06-22T01:34:20.3569343Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-22T01:34:20.3569473Z       "requiredStages": [
2026-06-22T01:34:20.3569562Z         "doc",
2026-06-22T01:34:20.3569653Z         "impl",
2026-06-22T01:34:20.3569735Z         "unit"
2026-06-22T01:34:20.3569816Z       ],
2026-06-22T01:34:20.3569900Z       "stages": {
2026-06-22T01:34:20.3569973Z         "doc": {
2026-06-22T01:34:20.3570069Z           "complete": true,
2026-06-22T01:34:20.3570150Z           "evidence": [
2026-06-22T01:34:20.3570234Z             {
2026-06-22T01:34:20.3570321Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3570411Z               "line": 83
2026-06-22T01:34:20.3570502Z             }
2026-06-22T01:34:20.3570587Z           ]
2026-06-22T01:34:20.3570675Z         },
2026-06-22T01:34:20.3570759Z         "impl": {
2026-06-22T01:34:20.3570864Z           "complete": true,
2026-06-22T01:34:20.3570937Z           "evidence": [
2026-06-22T01:34:20.3571032Z             {
2026-06-22T01:34:20.3571155Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3571231Z               "line": 120
2026-06-22T01:34:20.3571319Z             }
2026-06-22T01:34:20.3571403Z           ]
2026-06-22T01:34:20.3571478Z         },
2026-06-22T01:34:20.3571549Z         "int": {
2026-06-22T01:34:20.3571640Z           "complete": false,
2026-06-22T01:34:20.3571720Z           "evidence": []
2026-06-22T01:34:20.3571800Z         },
2026-06-22T01:34:20.3571886Z         "unit": {
2026-06-22T01:34:20.3571963Z           "complete": true,
2026-06-22T01:34:20.3572053Z           "evidence": [
2026-06-22T01:34:20.3572138Z             {
2026-06-22T01:34:20.3572263Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:34:20.3572359Z               "line": 404
2026-06-22T01:34:20.3572439Z             },
2026-06-22T01:34:20.3572525Z             {
2026-06-22T01:34:20.3572639Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3572734Z               "line": 1155
2026-06-22T01:34:20.3572811Z             },
2026-06-22T01:34:20.3572893Z             {
2026-06-22T01:34:20.3573012Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3573097Z               "line": 1184
2026-06-22T01:34:20.3573179Z             },
2026-06-22T01:34:20.3573255Z             {
2026-06-22T01:34:20.3573369Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3573455Z               "line": 1224
2026-06-22T01:34:20.3573537Z             },
2026-06-22T01:34:20.3573617Z             {
2026-06-22T01:34:20.3573731Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3573818Z               "line": 1239
2026-06-22T01:34:20.3574008Z             }
2026-06-22T01:34:20.3574089Z           ]
2026-06-22T01:34:20.3574176Z         }
2026-06-22T01:34:20.3574260Z       }
2026-06-22T01:34:20.3574431Z     },
2026-06-22T01:34:20.3574512Z     {
2026-06-22T01:34:20.3574606Z       "id": "REQ-MANIFEST-6",
2026-06-22T01:34:20.3576661Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-22T01:34:20.3576771Z       "requiredStages": [
2026-06-22T01:34:20.3576855Z         "doc",
2026-06-22T01:34:20.3576940Z         "unit"
2026-06-22T01:34:20.3577031Z       ],
2026-06-22T01:34:20.3577121Z       "stages": {
2026-06-22T01:34:20.3577201Z         "doc": {
2026-06-22T01:34:20.3577286Z           "complete": true,
2026-06-22T01:34:20.3577368Z           "evidence": [
2026-06-22T01:34:20.3577454Z             {
2026-06-22T01:34:20.3577553Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3577635Z               "line": 141
2026-06-22T01:34:20.3577716Z             }
2026-06-22T01:34:20.3577797Z           ]
2026-06-22T01:34:20.3577873Z         },
2026-06-22T01:34:20.3577959Z         "impl": {
2026-06-22T01:34:20.3578050Z           "complete": false,
2026-06-22T01:34:20.3578145Z           "evidence": []
2026-06-22T01:34:20.3578225Z         },
2026-06-22T01:34:20.3578313Z         "int": {
2026-06-22T01:34:20.3578398Z           "complete": false,
2026-06-22T01:34:20.3578484Z           "evidence": []
2026-06-22T01:34:20.3578574Z         },
2026-06-22T01:34:20.3578661Z         "unit": {
2026-06-22T01:34:20.3578750Z           "complete": true,
2026-06-22T01:34:20.3578836Z           "evidence": [
2026-06-22T01:34:20.3578922Z             {
2026-06-22T01:34:20.3579122Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.3579218Z               "line": 1261
2026-06-22T01:34:20.3579300Z             }
2026-06-22T01:34:20.3579384Z           ]
2026-06-22T01:34:20.3579471Z         }
2026-06-22T01:34:20.3579552Z       }
2026-06-22T01:34:20.3579638Z     },
2026-06-22T01:34:20.3579723Z     {
2026-06-22T01:34:20.3579822Z       "id": "REQ-MANIFEST-7",
2026-06-22T01:34:20.3582775Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-22T01:34:20.3582894Z       "requiredStages": [
2026-06-22T01:34:20.3582980Z         "doc",
2026-06-22T01:34:20.3583065Z         "impl",
2026-06-22T01:34:20.3583158Z         "unit"
2026-06-22T01:34:20.3583238Z       ],
2026-06-22T01:34:20.3583323Z       "stages": {
2026-06-22T01:34:20.3583405Z         "doc": {
2026-06-22T01:34:20.3583487Z           "complete": true,
2026-06-22T01:34:20.3583709Z           "evidence": [
2026-06-22T01:34:20.3583792Z             {
2026-06-22T01:34:20.3583891Z               "path": "docs/MANIFEST.md",
2026-06-22T01:34:20.3584078Z               "line": 35
2026-06-22T01:34:20.3584168Z             }
2026-06-22T01:34:20.3584254Z           ]
2026-06-22T01:34:20.3584344Z         },
2026-06-22T01:34:20.3584417Z         "impl": {
2026-06-22T01:34:20.3584497Z           "complete": true,
2026-06-22T01:34:20.3584582Z           "evidence": [
2026-06-22T01:34:20.3584693Z             {
2026-06-22T01:34:20.3584812Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.3584901Z               "line": 54
2026-06-22T01:34:20.3584986Z             }
2026-06-22T01:34:20.3585063Z           ]
2026-06-22T01:34:20.3585152Z         },
2026-06-22T01:34:20.3585218Z         "int": {
2026-06-22T01:34:20.3585313Z           "complete": false,
2026-06-22T01:34:20.3585390Z           "evidence": []
2026-06-22T01:34:20.3585476Z         },
2026-06-22T01:34:20.3585561Z         "unit": {
2026-06-22T01:34:20.3585652Z           "complete": true,
2026-06-22T01:34:20.3585733Z           "evidence": [
2026-06-22T01:34:20.3585824Z             {
2026-06-22T01:34:20.3585952Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3586053Z               "line": 1638
2026-06-22T01:34:20.3586139Z             }
2026-06-22T01:34:20.3586224Z           ]
2026-06-22T01:34:20.3586305Z         }
2026-06-22T01:34:20.3586391Z       }
2026-06-22T01:34:20.3586472Z     },
2026-06-22T01:34:20.3586558Z     {
2026-06-22T01:34:20.3586654Z       "id": "REQ-MANIFEST-8",
2026-06-22T01:34:20.3588819Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-22T01:34:20.3588934Z       "requiredStages": [
2026-06-22T01:34:20.3589091Z         "doc",
2026-06-22T01:34:20.3589177Z         "impl",
2026-06-22T01:34:20.3589263Z         "unit",
2026-06-22T01:34:20.3589344Z         "int"
2026-06-22T01:34:20.3589425Z       ],
2026-06-22T01:34:20.3589512Z       "stages": {
2026-06-22T01:34:20.3589597Z         "doc": {
2026-06-22T01:34:20.3589682Z           "complete": true,
2026-06-22T01:34:20.3589763Z           "evidence": [
2026-06-22T01:34:20.3589841Z             {
2026-06-22T01:34:20.3589935Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3590026Z               "line": 184
2026-06-22T01:34:20.3590108Z             },
2026-06-22T01:34:20.3590189Z             {
2026-06-22T01:34:20.3590297Z               "path": "docs/MANIFEST.md",
2026-06-22T01:34:20.3590377Z               "line": 46
2026-06-22T01:34:20.3590468Z             }
2026-06-22T01:34:20.3590555Z           ]
2026-06-22T01:34:20.3590635Z         },
2026-06-22T01:34:20.3590720Z         "impl": {
2026-06-22T01:34:20.3590807Z           "complete": true,
2026-06-22T01:34:20.3590898Z           "evidence": [
2026-06-22T01:34:20.3590978Z             {
2026-06-22T01:34:20.3591113Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3591198Z               "line": 222
2026-06-22T01:34:20.3591284Z             },
2026-06-22T01:34:20.3591369Z             {
2026-06-22T01:34:20.3591475Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.3591569Z               "line": 306
2026-06-22T01:34:20.3591650Z             }
2026-06-22T01:34:20.3591737Z           ]
2026-06-22T01:34:20.3591809Z         },
2026-06-22T01:34:20.3591898Z         "int": {
2026-06-22T01:34:20.3592104Z           "complete": true,
2026-06-22T01:34:20.3592194Z           "evidence": [
2026-06-22T01:34:20.3592280Z             {
2026-06-22T01:34:20.3592499Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T01:34:20.3592579Z               "line": 18
2026-06-22T01:34:20.3592665Z             }
2026-06-22T01:34:20.3592746Z           ]
2026-06-22T01:34:20.3592836Z         },
2026-06-22T01:34:20.3592920Z         "unit": {
2026-06-22T01:34:20.3593006Z           "complete": true,
2026-06-22T01:34:20.3593088Z           "evidence": [
2026-06-22T01:34:20.3593173Z             {
2026-06-22T01:34:20.3593292Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3593388Z               "line": 1656
2026-06-22T01:34:20.3593469Z             },
2026-06-22T01:34:20.3593550Z             {
2026-06-22T01:34:20.3593679Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3593765Z               "line": 316
2026-06-22T01:34:20.3593841Z             },
2026-06-22T01:34:20.3593936Z             {
2026-06-22T01:34:20.3594056Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3594156Z               "line": 332
2026-06-22T01:34:20.3594241Z             },
2026-06-22T01:34:20.3594332Z             {
2026-06-22T01:34:20.3594437Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.3594532Z               "line": 345
2026-06-22T01:34:20.3594609Z             },
2026-06-22T01:34:20.3594695Z             {
2026-06-22T01:34:20.3594814Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.3594904Z               "line": 422
2026-06-22T01:34:20.3594977Z             },
2026-06-22T01:34:20.3595062Z             {
2026-06-22T01:34:20.3595176Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:34:20.3595258Z               "line": 436
2026-06-22T01:34:20.3595349Z             }
2026-06-22T01:34:20.3595437Z           ]
2026-06-22T01:34:20.3595513Z         }
2026-06-22T01:34:20.3595604Z       }
2026-06-22T01:34:20.3595689Z     },
2026-06-22T01:34:20.3595773Z     {
2026-06-22T01:34:20.3595868Z       "id": "REQ-MESH-1",
2026-06-22T01:34:20.3597938Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-22T01:34:20.3598037Z       "requiredStages": [
2026-06-22T01:34:20.3598118Z         "impl",
2026-06-22T01:34:20.3598204Z         "unit",
2026-06-22T01:34:20.3598306Z         "int"
2026-06-22T01:34:20.3598392Z       ],
2026-06-22T01:34:20.3598473Z       "stages": {
2026-06-22T01:34:20.3598560Z         "doc": {
2026-06-22T01:34:20.3598650Z           "complete": false,
2026-06-22T01:34:20.3598740Z           "evidence": []
2026-06-22T01:34:20.3598827Z         },
2026-06-22T01:34:20.3598913Z         "impl": {
2026-06-22T01:34:20.3599084Z           "complete": true,
2026-06-22T01:34:20.3599166Z           "evidence": [
2026-06-22T01:34:20.3599251Z             {
2026-06-22T01:34:20.3599369Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.3599452Z               "line": 972
2026-06-22T01:34:20.3599532Z             },
2026-06-22T01:34:20.3599608Z             {
2026-06-22T01:34:20.3599738Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3599819Z               "line": 38
2026-06-22T01:34:20.3599895Z             },
2026-06-22T01:34:20.3599980Z             {
2026-06-22T01:34:20.3600101Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3600300Z               "line": 161
2026-06-22T01:34:20.3600382Z             },
2026-06-22T01:34:20.3600542Z             {
2026-06-22T01:34:20.3600663Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3600745Z               "line": 206
2026-06-22T01:34:20.3600829Z             },
2026-06-22T01:34:20.3600909Z             {
2026-06-22T01:34:20.3601018Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3601105Z               "line": 57
2026-06-22T01:34:20.3601190Z             },
2026-06-22T01:34:20.3601275Z             {
2026-06-22T01:34:20.3601406Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3601491Z               "line": 24
2026-06-22T01:34:20.3601581Z             },
2026-06-22T01:34:20.3601658Z             {
2026-06-22T01:34:20.3601792Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3601872Z               "line": 142
2026-06-22T01:34:20.3601963Z             },
2026-06-22T01:34:20.3602044Z             {
2026-06-22T01:34:20.3602173Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3602268Z               "line": 162
2026-06-22T01:34:20.3602341Z             }
2026-06-22T01:34:20.3602425Z           ]
2026-06-22T01:34:20.3602492Z         },
2026-06-22T01:34:20.3602578Z         "int": {
2026-06-22T01:34:20.3602660Z           "complete": true,
2026-06-22T01:34:20.3602754Z           "evidence": [
2026-06-22T01:34:20.3602840Z             {
2026-06-22T01:34:20.3602966Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T01:34:20.3603046Z               "line": 67
2026-06-22T01:34:20.3603130Z             },
2026-06-22T01:34:20.3603216Z             {
2026-06-22T01:34:20.3603335Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T01:34:20.3603428Z               "line": 93
2026-06-22T01:34:20.3603509Z             },
2026-06-22T01:34:20.3603590Z             {
2026-06-22T01:34:20.3603715Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T01:34:20.3603786Z               "line": 117
2026-06-22T01:34:20.3603876Z             },
2026-06-22T01:34:20.3603958Z             {
2026-06-22T01:34:20.3604086Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T01:34:20.3604167Z               "line": 134
2026-06-22T01:34:20.3604249Z             }
2026-06-22T01:34:20.3606949Z           ]
2026-06-22T01:34:20.3607058Z         },
2026-06-22T01:34:20.3607140Z         "unit": {
2026-06-22T01:34:20.3607230Z           "complete": true,
2026-06-22T01:34:20.3607320Z           "evidence": [
2026-06-22T01:34:20.3607401Z             {
2026-06-22T01:34:20.3607535Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3607621Z               "line": 427
2026-06-22T01:34:20.3607707Z             },
2026-06-22T01:34:20.3607789Z             {
2026-06-22T01:34:20.3607931Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3608031Z               "line": 376
2026-06-22T01:34:20.3608118Z             },
2026-06-22T01:34:20.3608207Z             {
2026-06-22T01:34:20.3608336Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3608423Z               "line": 412
2026-06-22T01:34:20.3608508Z             },
2026-06-22T01:34:20.3608588Z             {
2026-06-22T01:34:20.3608698Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3608783Z               "line": 427
2026-06-22T01:34:20.3608867Z             },
2026-06-22T01:34:20.3609038Z             {
2026-06-22T01:34:20.3609159Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3609243Z               "line": 438
2026-06-22T01:34:20.3609324Z             },
2026-06-22T01:34:20.3609406Z             {
2026-06-22T01:34:20.3609525Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3609606Z               "line": 449
2026-06-22T01:34:20.3609816Z             },
2026-06-22T01:34:20.3609901Z             {
2026-06-22T01:34:20.3610031Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3610211Z               "line": 460
2026-06-22T01:34:20.3610283Z             },
2026-06-22T01:34:20.3610370Z             {
2026-06-22T01:34:20.3610493Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3610578Z               "line": 496
2026-06-22T01:34:20.3610666Z             },
2026-06-22T01:34:20.3610750Z             {
2026-06-22T01:34:20.3610874Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3610956Z               "line": 519
2026-06-22T01:34:20.3611041Z             },
2026-06-22T01:34:20.3611117Z             {
2026-06-22T01:34:20.3611248Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3611329Z               "line": 546
2026-06-22T01:34:20.3611407Z             }
2026-06-22T01:34:20.3611493Z           ]
2026-06-22T01:34:20.3611579Z         }
2026-06-22T01:34:20.3611665Z       }
2026-06-22T01:34:20.3611736Z     },
2026-06-22T01:34:20.3611817Z     {
2026-06-22T01:34:20.3611903Z       "id": "REQ-MESH-2",
2026-06-22T01:34:20.3614965Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-22T01:34:20.3615110Z       "requiredStages": [
2026-06-22T01:34:20.3615219Z         "impl",
2026-06-22T01:34:20.3615290Z         "unit",
2026-06-22T01:34:20.3615371Z         "int"
2026-06-22T01:34:20.3615453Z       ],
2026-06-22T01:34:20.3615538Z       "stages": {
2026-06-22T01:34:20.3615619Z         "doc": {
2026-06-22T01:34:20.3615720Z           "complete": false,
2026-06-22T01:34:20.3615811Z           "evidence": []
2026-06-22T01:34:20.3615886Z         },
2026-06-22T01:34:20.3615977Z         "impl": {
2026-06-22T01:34:20.3616064Z           "complete": true,
2026-06-22T01:34:20.3616154Z           "evidence": [
2026-06-22T01:34:20.3616320Z             {
2026-06-22T01:34:20.3616445Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.3616534Z               "line": 807
2026-06-22T01:34:20.3616610Z             },
2026-06-22T01:34:20.3616695Z             {
2026-06-22T01:34:20.3616814Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.3616912Z               "line": 118
2026-06-22T01:34:20.3617003Z             },
2026-06-22T01:34:20.3617090Z             {
2026-06-22T01:34:20.3617213Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.3617304Z               "line": 347
2026-06-22T01:34:20.3617390Z             },
2026-06-22T01:34:20.3617466Z             {
2026-06-22T01:34:20.3617584Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.3617672Z               "line": 389
2026-06-22T01:34:20.3617757Z             },
2026-06-22T01:34:20.3617838Z             {
2026-06-22T01:34:20.3617943Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.3618034Z               "line": 403
2026-06-22T01:34:20.3618105Z             },
2026-06-22T01:34:20.3618186Z             {
2026-06-22T01:34:20.3618296Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.3618387Z               "line": 492
2026-06-22T01:34:20.3618582Z             },
2026-06-22T01:34:20.3618663Z             {
2026-06-22T01:34:20.3618781Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.3618926Z               "line": 507
2026-06-22T01:34:20.3619096Z             },
2026-06-22T01:34:20.3619172Z             {
2026-06-22T01:34:20.3619281Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.3619376Z               "line": 534
2026-06-22T01:34:20.3619446Z             },
2026-06-22T01:34:20.3619531Z             {
2026-06-22T01:34:20.3619657Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3619747Z               "line": 207
2026-06-22T01:34:20.3619827Z             },
2026-06-22T01:34:20.3619899Z             {
2026-06-22T01:34:20.3620023Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3620118Z               "line": 755
2026-06-22T01:34:20.3620199Z             },
2026-06-22T01:34:20.3620281Z             {
2026-06-22T01:34:20.3620414Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3620504Z               "line": 816
2026-06-22T01:34:20.3620586Z             },
2026-06-22T01:34:20.3620676Z             {
2026-06-22T01:34:20.3620786Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3620872Z               "line": 869
2026-06-22T01:34:20.3620949Z             },
2026-06-22T01:34:20.3621034Z             {
2026-06-22T01:34:20.3621148Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3621230Z               "line": 891
2026-06-22T01:34:20.3621305Z             },
2026-06-22T01:34:20.3621382Z             {
2026-06-22T01:34:20.3621498Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3621574Z               "line": 122
2026-06-22T01:34:20.3621658Z             },
2026-06-22T01:34:20.3621739Z             {
2026-06-22T01:34:20.3621850Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3621945Z               "line": 44
2026-06-22T01:34:20.3622020Z             },
2026-06-22T01:34:20.3622105Z             {
2026-06-22T01:34:20.3622221Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3622311Z               "line": 184
2026-06-22T01:34:20.3622401Z             },
2026-06-22T01:34:20.3622468Z             {
2026-06-22T01:34:20.3622583Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3622658Z               "line": 211
2026-06-22T01:34:20.3622744Z             },
2026-06-22T01:34:20.3622822Z             {
2026-06-22T01:34:20.3622927Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3623016Z               "line": 251
2026-06-22T01:34:20.3623107Z             },
2026-06-22T01:34:20.3623202Z             {
2026-06-22T01:34:20.3623321Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3623403Z               "line": 275
2026-06-22T01:34:20.3623480Z             },
2026-06-22T01:34:20.3623565Z             {
2026-06-22T01:34:20.3623679Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3623766Z               "line": 289
2026-06-22T01:34:20.3623846Z             },
2026-06-22T01:34:20.3623927Z             {
2026-06-22T01:34:20.3624027Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3624119Z               "line": 300
2026-06-22T01:34:20.3624193Z             },
2026-06-22T01:34:20.3624270Z             {
2026-06-22T01:34:20.3624379Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3624469Z               "line": 313
2026-06-22T01:34:20.3624553Z             }
2026-06-22T01:34:20.3624643Z           ]
2026-06-22T01:34:20.3624730Z         },
2026-06-22T01:34:20.3624807Z         "int": {
2026-06-22T01:34:20.3624901Z           "complete": true,
2026-06-22T01:34:20.3624992Z           "evidence": [
2026-06-22T01:34:20.3625064Z             {
2026-06-22T01:34:20.3625178Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T01:34:20.3625379Z               "line": 116
2026-06-22T01:34:20.3625455Z             },
2026-06-22T01:34:20.3625530Z             {
2026-06-22T01:34:20.3625750Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T01:34:20.3625836Z               "line": 181
2026-06-22T01:34:20.3625916Z             }
2026-06-22T01:34:20.3625999Z           ]
2026-06-22T01:34:20.3626084Z         },
2026-06-22T01:34:20.3626160Z         "unit": {
2026-06-22T01:34:20.3626241Z           "complete": true,
2026-06-22T01:34:20.3626338Z           "evidence": [
2026-06-22T01:34:20.3626413Z             {
2026-06-22T01:34:20.3626527Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3626614Z               "line": 999
2026-06-22T01:34:20.3626700Z             },
2026-06-22T01:34:20.3626784Z             {
2026-06-22T01:34:20.3626900Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3626991Z               "line": 1016
2026-06-22T01:34:20.3627075Z             },
2026-06-22T01:34:20.3627170Z             {
2026-06-22T01:34:20.3627280Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3627374Z               "line": 1024
2026-06-22T01:34:20.3627454Z             },
2026-06-22T01:34:20.3627529Z             {
2026-06-22T01:34:20.3627645Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3627731Z               "line": 1048
2026-06-22T01:34:20.3627811Z             },
2026-06-22T01:34:20.3627883Z             {
2026-06-22T01:34:20.3628007Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3628097Z               "line": 1499
2026-06-22T01:34:20.3628173Z             },
2026-06-22T01:34:20.3628260Z             {
2026-06-22T01:34:20.3628365Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3628455Z               "line": 347
2026-06-22T01:34:20.3628526Z             },
2026-06-22T01:34:20.3628603Z             {
2026-06-22T01:34:20.3628718Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3628808Z               "line": 370
2026-06-22T01:34:20.3628890Z             },
2026-06-22T01:34:20.3629061Z             {
2026-06-22T01:34:20.3629171Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3629257Z               "line": 407
2026-06-22T01:34:20.3629337Z             },
2026-06-22T01:34:20.3629423Z             {
2026-06-22T01:34:20.3629525Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3629605Z               "line": 431
2026-06-22T01:34:20.3629680Z             },
2026-06-22T01:34:20.3629765Z             {
2026-06-22T01:34:20.3629865Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3629945Z               "line": 483
2026-06-22T01:34:20.3630020Z             },
2026-06-22T01:34:20.3630096Z             {
2026-06-22T01:34:20.3630202Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3630279Z               "line": 499
2026-06-22T01:34:20.3630358Z             },
2026-06-22T01:34:20.3630444Z             {
2026-06-22T01:34:20.3630555Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3630645Z               "line": 514
2026-06-22T01:34:20.3630716Z             },
2026-06-22T01:34:20.3630798Z             {
2026-06-22T01:34:20.3630903Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3630993Z               "line": 531
2026-06-22T01:34:20.3631069Z             }
2026-06-22T01:34:20.3631137Z           ]
2026-06-22T01:34:20.3631222Z         }
2026-06-22T01:34:20.3631303Z       }
2026-06-22T01:34:20.3631389Z     },
2026-06-22T01:34:20.3631466Z     {
2026-06-22T01:34:20.3631556Z       "id": "REQ-MESH-3",
2026-06-22T01:34:20.3633214Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-22T01:34:20.3633501Z       "requiredStages": [
2026-06-22T01:34:20.3633581Z         "impl",
2026-06-22T01:34:20.3633658Z         "unit",
2026-06-22T01:34:20.3633730Z         "int"
2026-06-22T01:34:20.3633810Z       ],
2026-06-22T01:34:20.3633891Z       "stages": {
2026-06-22T01:34:20.3633968Z         "doc": {
2026-06-22T01:34:20.3634064Z           "complete": false,
2026-06-22T01:34:20.3634154Z           "evidence": []
2026-06-22T01:34:20.3634234Z         },
2026-06-22T01:34:20.3634317Z         "impl": {
2026-06-22T01:34:20.3634406Z           "complete": true,
2026-06-22T01:34:20.3634497Z           "evidence": [
2026-06-22T01:34:20.3634582Z             {
2026-06-22T01:34:20.3634698Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.3634806Z               "line": 641
2026-06-22T01:34:20.3634886Z             }
2026-06-22T01:34:20.3634977Z           ]
2026-06-22T01:34:20.3635066Z         },
2026-06-22T01:34:20.3635147Z         "int": {
2026-06-22T01:34:20.3635237Z           "complete": true,
2026-06-22T01:34:20.3635314Z           "evidence": [
2026-06-22T01:34:20.3635386Z             {
2026-06-22T01:34:20.3635499Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T01:34:20.3635590Z               "line": 373
2026-06-22T01:34:20.3635681Z             },
2026-06-22T01:34:20.3635757Z             {
2026-06-22T01:34:20.3635876Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T01:34:20.3635963Z               "line": 436
2026-06-22T01:34:20.3636034Z             }
2026-06-22T01:34:20.3636119Z           ]
2026-06-22T01:34:20.3636196Z         },
2026-06-22T01:34:20.3636287Z         "unit": {
2026-06-22T01:34:20.3636377Z           "complete": true,
2026-06-22T01:34:20.3636467Z           "evidence": [
2026-06-22T01:34:20.3636554Z             {
2026-06-22T01:34:20.3636677Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.3636773Z               "line": 910
2026-06-22T01:34:20.3636854Z             }
2026-06-22T01:34:20.3636940Z           ]
2026-06-22T01:34:20.3637020Z         }
2026-06-22T01:34:20.3637102Z       }
2026-06-22T01:34:20.3637184Z     },
2026-06-22T01:34:20.3637264Z     {
2026-06-22T01:34:20.3637344Z       "id": "REQ-MESH-4",
2026-06-22T01:34:20.3639568Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-22T01:34:20.3639682Z       "requiredStages": [
2026-06-22T01:34:20.3639765Z         "impl",
2026-06-22T01:34:20.3639850Z         "unit",
2026-06-22T01:34:20.3639935Z         "int"
2026-06-22T01:34:20.3640012Z       ],
2026-06-22T01:34:20.3640099Z       "stages": {
2026-06-22T01:34:20.3640174Z         "doc": {
2026-06-22T01:34:20.3640263Z           "complete": false,
2026-06-22T01:34:20.3640344Z           "evidence": []
2026-06-22T01:34:20.3640425Z         },
2026-06-22T01:34:20.3640510Z         "impl": {
2026-06-22T01:34:20.3640599Z           "complete": true,
2026-06-22T01:34:20.3640685Z           "evidence": [
2026-06-22T01:34:20.3640767Z             {
2026-06-22T01:34:20.3640896Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:34:20.3641111Z               "line": 33
2026-06-22T01:34:20.3641177Z             },
2026-06-22T01:34:20.3641262Z             {
2026-06-22T01:34:20.3641501Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3641586Z               "line": 68
2026-06-22T01:34:20.3641659Z             },
2026-06-22T01:34:20.3641744Z             {
2026-06-22T01:34:20.3641863Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3641949Z               "line": 111
2026-06-22T01:34:20.3642036Z             },
2026-06-22T01:34:20.3642111Z             {
2026-06-22T01:34:20.3642220Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3642308Z               "line": 462
2026-06-22T01:34:20.3642388Z             },
2026-06-22T01:34:20.3642473Z             {
2026-06-22T01:34:20.3642584Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3642670Z               "line": 711
2026-06-22T01:34:20.3642755Z             },
2026-06-22T01:34:20.3642841Z             {
2026-06-22T01:34:20.3642961Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3643046Z               "line": 725
2026-06-22T01:34:20.3643121Z             },
2026-06-22T01:34:20.3643197Z             {
2026-06-22T01:34:20.3643312Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.3643394Z               "line": 132
2026-06-22T01:34:20.3643478Z             },
2026-06-22T01:34:20.3643569Z             {
2026-06-22T01:34:20.3643693Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:34:20.3643779Z               "line": 26
2026-06-22T01:34:20.3643855Z             },
2026-06-22T01:34:20.3643942Z             {
2026-06-22T01:34:20.3644057Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:34:20.3644136Z               "line": 97
2026-06-22T01:34:20.3644218Z             },
2026-06-22T01:34:20.3644304Z             {
2026-06-22T01:34:20.3644418Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:34:20.3644508Z               "line": 119
2026-06-22T01:34:20.3644591Z             },
2026-06-22T01:34:20.3644680Z             {
2026-06-22T01:34:20.3644790Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3644872Z               "line": 82
2026-06-22T01:34:20.3644958Z             },
2026-06-22T01:34:20.3645037Z             {
2026-06-22T01:34:20.3645148Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3645240Z               "line": 111
2026-06-22T01:34:20.3645314Z             },
2026-06-22T01:34:20.3645404Z             {
2026-06-22T01:34:20.3645513Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3645595Z               "line": 232
2026-06-22T01:34:20.3645678Z             },
2026-06-22T01:34:20.3645764Z             {
2026-06-22T01:34:20.3645869Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3645951Z               "line": 245
2026-06-22T01:34:20.3646040Z             },
2026-06-22T01:34:20.3646126Z             {
2026-06-22T01:34:20.3646232Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3646336Z               "line": 4665
2026-06-22T01:34:20.3646421Z             }
2026-06-22T01:34:20.3646504Z           ]
2026-06-22T01:34:20.3646584Z         },
2026-06-22T01:34:20.3646669Z         "int": {
2026-06-22T01:34:20.3646766Z           "complete": true,
2026-06-22T01:34:20.3646852Z           "evidence": [
2026-06-22T01:34:20.3646938Z             {
2026-06-22T01:34:20.3647061Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T01:34:20.3647153Z               "line": 98
2026-06-22T01:34:20.3647237Z             },
2026-06-22T01:34:20.3647323Z             {
2026-06-22T01:34:20.3647434Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T01:34:20.3647519Z               "line": 140
2026-06-22T01:34:20.3647605Z             }
2026-06-22T01:34:20.3647686Z           ]
2026-06-22T01:34:20.3647773Z         },
2026-06-22T01:34:20.3647857Z         "unit": {
2026-06-22T01:34:20.3648035Z           "complete": true,
2026-06-22T01:34:20.3648126Z           "evidence": [
2026-06-22T01:34:20.3648290Z             {
2026-06-22T01:34:20.3648419Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:34:20.3648494Z               "line": 178
2026-06-22T01:34:20.3648574Z             },
2026-06-22T01:34:20.3648659Z             {
2026-06-22T01:34:20.3648784Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:34:20.3648869Z               "line": 242
2026-06-22T01:34:20.3649017Z             },
2026-06-22T01:34:20.3649104Z             {
2026-06-22T01:34:20.3649227Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3649318Z               "line": 1079
2026-06-22T01:34:20.3649404Z             },
2026-06-22T01:34:20.3649485Z             {
2026-06-22T01:34:20.3649613Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3649686Z               "line": 1109
2026-06-22T01:34:20.3649780Z             },
2026-06-22T01:34:20.3649856Z             {
2026-06-22T01:34:20.3649976Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:34:20.3650067Z               "line": 1129
2026-06-22T01:34:20.3650152Z             },
2026-06-22T01:34:20.3650233Z             {
2026-06-22T01:34:20.3650368Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:34:20.3650452Z               "line": 602
2026-06-22T01:34:20.3650534Z             },
2026-06-22T01:34:20.3650621Z             {
2026-06-22T01:34:20.3650730Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:34:20.3650819Z               "line": 148
2026-06-22T01:34:20.3650904Z             },
2026-06-22T01:34:20.3650986Z             {
2026-06-22T01:34:20.3651093Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:34:20.3651178Z               "line": 169
2026-06-22T01:34:20.3651255Z             },
2026-06-22T01:34:20.3651342Z             {
2026-06-22T01:34:20.3651460Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:34:20.3651541Z               "line": 181
2026-06-22T01:34:20.3651628Z             },
2026-06-22T01:34:20.3651713Z             {
2026-06-22T01:34:20.3651827Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:34:20.3651919Z               "line": 202
2026-06-22T01:34:20.3651999Z             },
2026-06-22T01:34:20.3652080Z             {
2026-06-22T01:34:20.3652190Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3652281Z               "line": 375
2026-06-22T01:34:20.3652366Z             },
2026-06-22T01:34:20.3652442Z             {
2026-06-22T01:34:20.3652553Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3652638Z               "line": 407
2026-06-22T01:34:20.3652714Z             },
2026-06-22T01:34:20.3652795Z             {
2026-06-22T01:34:20.3652887Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3652976Z               "line": 10052
2026-06-22T01:34:20.3653067Z             }
2026-06-22T01:34:20.3653149Z           ]
2026-06-22T01:34:20.3653235Z         }
2026-06-22T01:34:20.3653319Z       }
2026-06-22T01:34:20.3653406Z     },
2026-06-22T01:34:20.3653488Z     {
2026-06-22T01:34:20.3653588Z       "id": "REQ-MESH-5",
2026-06-22T01:34:20.3654964Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-22T01:34:20.3655049Z       "requiredStages": [
2026-06-22T01:34:20.3655146Z         "impl",
2026-06-22T01:34:20.3655222Z         "unit"
2026-06-22T01:34:20.3655307Z       ],
2026-06-22T01:34:20.3655393Z       "stages": {
2026-06-22T01:34:20.3655597Z         "doc": {
2026-06-22T01:34:20.3655689Z           "complete": false,
2026-06-22T01:34:20.3655879Z           "evidence": []
2026-06-22T01:34:20.3655964Z         },
2026-06-22T01:34:20.3656050Z         "impl": {
2026-06-22T01:34:20.3656145Z           "complete": true,
2026-06-22T01:34:20.3656229Z           "evidence": [
2026-06-22T01:34:20.3656314Z             {
2026-06-22T01:34:20.3656444Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3656534Z               "line": 61
2026-06-22T01:34:20.3656624Z             },
2026-06-22T01:34:20.3656701Z             {
2026-06-22T01:34:20.3656820Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3656901Z               "line": 109
2026-06-22T01:34:20.3656986Z             },
2026-06-22T01:34:20.3657074Z             {
2026-06-22T01:34:20.3657192Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.3657287Z               "line": 104
2026-06-22T01:34:20.3657369Z             },
2026-06-22T01:34:20.3657454Z             {
2026-06-22T01:34:20.3657563Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.3657655Z               "line": 105
2026-06-22T01:34:20.3657741Z             },
2026-06-22T01:34:20.3657822Z             {
2026-06-22T01:34:20.3657955Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3658032Z               "line": 85
2026-06-22T01:34:20.3658107Z             },
2026-06-22T01:34:20.3658193Z             {
2026-06-22T01:34:20.3658323Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3658404Z               "line": 250
2026-06-22T01:34:20.3658489Z             },
2026-06-22T01:34:20.3658570Z             {
2026-06-22T01:34:20.3658681Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3658774Z               "line": 314
2026-06-22T01:34:20.3658860Z             },
2026-06-22T01:34:20.3658936Z             {
2026-06-22T01:34:20.3659144Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3659229Z               "line": 767
2026-06-22T01:34:20.3659316Z             },
2026-06-22T01:34:20.3659397Z             {
2026-06-22T01:34:20.3659515Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3659607Z               "line": 101
2026-06-22T01:34:20.3659687Z             },
2026-06-22T01:34:20.3659777Z             {
2026-06-22T01:34:20.3659893Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3659979Z               "line": 193
2026-06-22T01:34:20.3660060Z             }
2026-06-22T01:34:20.3660145Z           ]
2026-06-22T01:34:20.3660231Z         },
2026-06-22T01:34:20.3660317Z         "int": {
2026-06-22T01:34:20.3660416Z           "complete": false,
2026-06-22T01:34:20.3660502Z           "evidence": []
2026-06-22T01:34:20.3660580Z         },
2026-06-22T01:34:20.3660664Z         "unit": {
2026-06-22T01:34:20.3660765Z           "complete": true,
2026-06-22T01:34:20.3660866Z           "evidence": [
2026-06-22T01:34:20.3660947Z             {
2026-06-22T01:34:20.3661070Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3661167Z               "line": 1009
2026-06-22T01:34:20.3661262Z             },
2026-06-22T01:34:20.3661336Z             {
2026-06-22T01:34:20.3661455Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:34:20.3661546Z               "line": 462
2026-06-22T01:34:20.3661625Z             }
2026-06-22T01:34:20.3661711Z           ]
2026-06-22T01:34:20.3661796Z         }
2026-06-22T01:34:20.3661878Z       }
2026-06-22T01:34:20.3661950Z     },
2026-06-22T01:34:20.3662034Z     {
2026-06-22T01:34:20.3662125Z       "id": "REQ-MESH-6",
2026-06-22T01:34:20.3663341Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-22T01:34:20.3663646Z       "requiredStages": [
2026-06-22T01:34:20.3663733Z         "impl",
2026-06-22T01:34:20.3663819Z         "unit"
2026-06-22T01:34:20.3663903Z       ],
2026-06-22T01:34:20.3663990Z       "stages": {
2026-06-22T01:34:20.3664082Z         "doc": {
2026-06-22T01:34:20.3664166Z           "complete": false,
2026-06-22T01:34:20.3664256Z           "evidence": []
2026-06-22T01:34:20.3664336Z         },
2026-06-22T01:34:20.3664423Z         "impl": {
2026-06-22T01:34:20.3664519Z           "complete": true,
2026-06-22T01:34:20.3664608Z           "evidence": [
2026-06-22T01:34:20.3664689Z             {
2026-06-22T01:34:20.3664795Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3664890Z               "line": 4181
2026-06-22T01:34:20.3664975Z             }
2026-06-22T01:34:20.3665062Z           ]
2026-06-22T01:34:20.3665167Z         },
2026-06-22T01:34:20.3665247Z         "int": {
2026-06-22T01:34:20.3665343Z           "complete": false,
2026-06-22T01:34:20.3665429Z           "evidence": []
2026-06-22T01:34:20.3665505Z         },
2026-06-22T01:34:20.3665590Z         "unit": {
2026-06-22T01:34:20.3665683Z           "complete": true,
2026-06-22T01:34:20.3665763Z           "evidence": [
2026-06-22T01:34:20.3665834Z             {
2026-06-22T01:34:20.3665944Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3666030Z               "line": 10602
2026-06-22T01:34:20.3666125Z             },
2026-06-22T01:34:20.3666201Z             {
2026-06-22T01:34:20.3666302Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3666407Z               "line": 10629
2026-06-22T01:34:20.3666486Z             },
2026-06-22T01:34:20.3666572Z             {
2026-06-22T01:34:20.3666672Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3666766Z               "line": 10653
2026-06-22T01:34:20.3666856Z             }
2026-06-22T01:34:20.3666947Z           ]
2026-06-22T01:34:20.3667033Z         }
2026-06-22T01:34:20.3667109Z       }
2026-06-22T01:34:20.3667199Z     },
2026-06-22T01:34:20.3667276Z     {
2026-06-22T01:34:20.3667375Z       "id": "REQ-MIGRATE-1",
2026-06-22T01:34:20.3667537Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-22T01:34:20.3667639Z       "requiredStages": [],
2026-06-22T01:34:20.3667729Z       "stages": {
2026-06-22T01:34:20.3667813Z         "doc": {
2026-06-22T01:34:20.3667901Z           "complete": false,
2026-06-22T01:34:20.3667991Z           "evidence": []
2026-06-22T01:34:20.3668072Z         },
2026-06-22T01:34:20.3668157Z         "impl": {
2026-06-22T01:34:20.3668244Z           "complete": false,
2026-06-22T01:34:20.3668334Z           "evidence": []
2026-06-22T01:34:20.3668415Z         },
2026-06-22T01:34:20.3668506Z         "int": {
2026-06-22T01:34:20.3668597Z           "complete": false,
2026-06-22T01:34:20.3668682Z           "evidence": []
2026-06-22T01:34:20.3668763Z         },
2026-06-22T01:34:20.3668845Z         "unit": {
2026-06-22T01:34:20.3669011Z           "complete": false,
2026-06-22T01:34:20.3669101Z           "evidence": []
2026-06-22T01:34:20.3669189Z         }
2026-06-22T01:34:20.3669270Z       }
2026-06-22T01:34:20.3669349Z     },
2026-06-22T01:34:20.3669439Z     {
2026-06-22T01:34:20.3669534Z       "id": "REQ-MSG-1",
2026-06-22T01:34:20.3669962Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-22T01:34:20.3670056Z       "requiredStages": [
2026-06-22T01:34:20.3670143Z         "impl",
2026-06-22T01:34:20.3670229Z         "unit",
2026-06-22T01:34:20.3670314Z         "int"
2026-06-22T01:34:20.3670395Z       ],
2026-06-22T01:34:20.3670487Z       "stages": {
2026-06-22T01:34:20.3670572Z         "doc": {
2026-06-22T01:34:20.3670662Z           "complete": false,
2026-06-22T01:34:20.3670753Z           "evidence": []
2026-06-22T01:34:20.3670996Z         },
2026-06-22T01:34:20.3671077Z         "impl": {
2026-06-22T01:34:20.3671287Z           "complete": true,
2026-06-22T01:34:20.3671373Z           "evidence": [
2026-06-22T01:34:20.3671460Z             {
2026-06-22T01:34:20.3671572Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3671659Z               "line": 28
2026-06-22T01:34:20.3671741Z             },
2026-06-22T01:34:20.3671827Z             {
2026-06-22T01:34:20.3671939Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3672019Z               "line": 94
2026-06-22T01:34:20.3672092Z             },
2026-06-22T01:34:20.3672172Z             {
2026-06-22T01:34:20.3672280Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3672366Z               "line": 127
2026-06-22T01:34:20.3672452Z             },
2026-06-22T01:34:20.3672533Z             {
2026-06-22T01:34:20.3672646Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3672734Z               "line": 149
2026-06-22T01:34:20.3672810Z             },
2026-06-22T01:34:20.3672890Z             {
2026-06-22T01:34:20.3673005Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3673091Z               "line": 174
2026-06-22T01:34:20.3673177Z             },
2026-06-22T01:34:20.3673262Z             {
2026-06-22T01:34:20.3673368Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:34:20.3673453Z               "line": 18
2026-06-22T01:34:20.3673534Z             },
2026-06-22T01:34:20.3673615Z             {
2026-06-22T01:34:20.3673726Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.3673811Z               "line": 13
2026-06-22T01:34:20.3673896Z             },
2026-06-22T01:34:20.3673978Z             {
2026-06-22T01:34:20.3674082Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.3674163Z               "line": 62
2026-06-22T01:34:20.3674240Z             },
2026-06-22T01:34:20.3674327Z             {
2026-06-22T01:34:20.3674449Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3674521Z               "line": 13
2026-06-22T01:34:20.3674617Z             }
2026-06-22T01:34:20.3674698Z           ]
2026-06-22T01:34:20.3674787Z         },
2026-06-22T01:34:20.3674867Z         "int": {
2026-06-22T01:34:20.3674964Z           "complete": true,
2026-06-22T01:34:20.3675050Z           "evidence": [
2026-06-22T01:34:20.3675131Z             {
2026-06-22T01:34:20.3675274Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:34:20.3675355Z               "line": 9
2026-06-22T01:34:20.3675440Z             },
2026-06-22T01:34:20.3675525Z             {
2026-06-22T01:34:20.3675656Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:34:20.3675751Z               "line": 56
2026-06-22T01:34:20.3675831Z             },
2026-06-22T01:34:20.3675918Z             {
2026-06-22T01:34:20.3676046Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:34:20.3676146Z               "line": 113
2026-06-22T01:34:20.3676223Z             }
2026-06-22T01:34:20.3676318Z           ]
2026-06-22T01:34:20.3676399Z         },
2026-06-22T01:34:20.3676484Z         "unit": {
2026-06-22T01:34:20.3676577Z           "complete": true,
2026-06-22T01:34:20.3676661Z           "evidence": [
2026-06-22T01:34:20.3676752Z             {
2026-06-22T01:34:20.3676867Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3676957Z               "line": 203
2026-06-22T01:34:20.3677047Z             },
2026-06-22T01:34:20.3677127Z             {
2026-06-22T01:34:20.3677237Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3677326Z               "line": 232
2026-06-22T01:34:20.3680259Z             },
2026-06-22T01:34:20.3680359Z             {
2026-06-22T01:34:20.3680484Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3680578Z               "line": 277
2026-06-22T01:34:20.3680664Z             },
2026-06-22T01:34:20.3680898Z             {
2026-06-22T01:34:20.3681008Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3681185Z               "line": 300
2026-06-22T01:34:20.3681265Z             },
2026-06-22T01:34:20.3681352Z             {
2026-06-22T01:34:20.3681461Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:34:20.3681546Z               "line": 325
2026-06-22T01:34:20.3681642Z             },
2026-06-22T01:34:20.3681710Z             {
2026-06-22T01:34:20.3681813Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:34:20.3681894Z               "line": 204
2026-06-22T01:34:20.3681982Z             },
2026-06-22T01:34:20.3682063Z             {
2026-06-22T01:34:20.3682176Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:34:20.3682257Z               "line": 237
2026-06-22T01:34:20.3682330Z             },
2026-06-22T01:34:20.3682406Z             {
2026-06-22T01:34:20.3682509Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:34:20.3682609Z               "line": 251
2026-06-22T01:34:20.3682685Z             },
2026-06-22T01:34:20.3682774Z             {
2026-06-22T01:34:20.3682892Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:34:20.3682974Z               "line": 263
2026-06-22T01:34:20.3683056Z             },
2026-06-22T01:34:20.3683145Z             {
2026-06-22T01:34:20.3683245Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.3683337Z               "line": 162
2026-06-22T01:34:20.3683422Z             },
2026-06-22T01:34:20.3683507Z             {
2026-06-22T01:34:20.3683614Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:34:20.3683699Z               "line": 242
2026-06-22T01:34:20.3683779Z             },
2026-06-22T01:34:20.3683851Z             {
2026-06-22T01:34:20.3683962Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3684046Z               "line": 134
2026-06-22T01:34:20.3684132Z             },
2026-06-22T01:34:20.3684219Z             {
2026-06-22T01:34:20.3684328Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3684423Z               "line": 153
2026-06-22T01:34:20.3684499Z             }
2026-06-22T01:34:20.3684591Z           ]
2026-06-22T01:34:20.3684676Z         }
2026-06-22T01:34:20.3684761Z       }
2026-06-22T01:34:20.3684844Z     },
2026-06-22T01:34:20.3684921Z     {
2026-06-22T01:34:20.3685014Z       "id": "REQ-MSG-2",
2026-06-22T01:34:20.3685277Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-22T01:34:20.3685376Z       "requiredStages": [
2026-06-22T01:34:20.3685466Z         "impl",
2026-06-22T01:34:20.3685548Z         "unit"
2026-06-22T01:34:20.3685629Z       ],
2026-06-22T01:34:20.3685719Z       "stages": {
2026-06-22T01:34:20.3685810Z         "doc": {
2026-06-22T01:34:20.3685901Z           "complete": false,
2026-06-22T01:34:20.3685996Z           "evidence": []
2026-06-22T01:34:20.3686076Z         },
2026-06-22T01:34:20.3686173Z         "impl": {
2026-06-22T01:34:20.3686263Z           "complete": true,
2026-06-22T01:34:20.3686358Z           "evidence": [
2026-06-22T01:34:20.3686444Z             {
2026-06-22T01:34:20.3686535Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3686625Z               "line": 11
2026-06-22T01:34:20.3686701Z             },
2026-06-22T01:34:20.3686778Z             {
2026-06-22T01:34:20.3686878Z               "path": "crates/spt/src/main.rs",
2026-06-22T01:34:20.3686969Z               "line": 8
2026-06-22T01:34:20.3687054Z             }
2026-06-22T01:34:20.3687127Z           ]
2026-06-22T01:34:20.3687212Z         },
2026-06-22T01:34:20.3687283Z         "int": {
2026-06-22T01:34:20.3687379Z           "complete": false,
2026-06-22T01:34:20.3687457Z           "evidence": []
2026-06-22T01:34:20.3687540Z         },
2026-06-22T01:34:20.3687630Z         "unit": {
2026-06-22T01:34:20.3687711Z           "complete": true,
2026-06-22T01:34:20.3687802Z           "evidence": [
2026-06-22T01:34:20.3687961Z             {
2026-06-22T01:34:20.3688071Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3688229Z               "line": 7717
2026-06-22T01:34:20.3688309Z             },
2026-06-22T01:34:20.3688391Z             {
2026-06-22T01:34:20.3688492Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3688577Z               "line": 7759
2026-06-22T01:34:20.3688662Z             },
2026-06-22T01:34:20.3688744Z             {
2026-06-22T01:34:20.3688839Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3688920Z               "line": 7808
2026-06-22T01:34:20.3689068Z             },
2026-06-22T01:34:20.3689149Z             {
2026-06-22T01:34:20.3689249Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3689330Z               "line": 7831
2026-06-22T01:34:20.3689417Z             },
2026-06-22T01:34:20.3689488Z             {
2026-06-22T01:34:20.3689587Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3689670Z               "line": 9807
2026-06-22T01:34:20.3689760Z             },
2026-06-22T01:34:20.3689845Z             {
2026-06-22T01:34:20.3689951Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3690032Z               "line": 9816
2026-06-22T01:34:20.3690112Z             },
2026-06-22T01:34:20.3690194Z             {
2026-06-22T01:34:20.3690294Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3690380Z               "line": 9830
2026-06-22T01:34:20.3690465Z             }
2026-06-22T01:34:20.3690540Z           ]
2026-06-22T01:34:20.3690626Z         }
2026-06-22T01:34:20.3690702Z       }
2026-06-22T01:34:20.3690781Z     },
2026-06-22T01:34:20.3690866Z     {
2026-06-22T01:34:20.3690948Z       "id": "REQ-MSG-3",
2026-06-22T01:34:20.3691321Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-22T01:34:20.3691411Z       "requiredStages": [
2026-06-22T01:34:20.3691496Z         "impl",
2026-06-22T01:34:20.3691578Z         "unit",
2026-06-22T01:34:20.3691664Z         "int"
2026-06-22T01:34:20.3691750Z       ],
2026-06-22T01:34:20.3691829Z       "stages": {
2026-06-22T01:34:20.3691912Z         "doc": {
2026-06-22T01:34:20.3692002Z           "complete": false,
2026-06-22T01:34:20.3692083Z           "evidence": []
2026-06-22T01:34:20.3692169Z         },
2026-06-22T01:34:20.3692251Z         "impl": {
2026-06-22T01:34:20.3692336Z           "complete": true,
2026-06-22T01:34:20.3692422Z           "evidence": [
2026-06-22T01:34:20.3692508Z             {
2026-06-22T01:34:20.3692623Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:34:20.3692707Z               "line": 19
2026-06-22T01:34:20.3692788Z             },
2026-06-22T01:34:20.3692871Z             {
2026-06-22T01:34:20.3692985Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.3693064Z               "line": 21
2026-06-22T01:34:20.3693140Z             },
2026-06-22T01:34:20.3693221Z             {
2026-06-22T01:34:20.3693339Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.3693419Z               "line": 48
2026-06-22T01:34:20.3693510Z             },
2026-06-22T01:34:20.3693591Z             {
2026-06-22T01:34:20.3693686Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.3693777Z               "line": 174
2026-06-22T01:34:20.3693854Z             }
2026-06-22T01:34:20.3693930Z           ]
2026-06-22T01:34:20.3694011Z         },
2026-06-22T01:34:20.3694101Z         "int": {
2026-06-22T01:34:20.3694188Z           "complete": true,
2026-06-22T01:34:20.3694273Z           "evidence": [
2026-06-22T01:34:20.3694358Z             {
2026-06-22T01:34:20.3694493Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:34:20.3694578Z               "line": 10
2026-06-22T01:34:20.3694659Z             },
2026-06-22T01:34:20.3694745Z             {
2026-06-22T01:34:20.3694874Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:34:20.3695064Z               "line": 56
2026-06-22T01:34:20.3695151Z             }
2026-06-22T01:34:20.3695231Z           ]
2026-06-22T01:34:20.3695404Z         },
2026-06-22T01:34:20.3695481Z         "unit": {
2026-06-22T01:34:20.3695569Z           "complete": true,
2026-06-22T01:34:20.3695651Z           "evidence": [
2026-06-22T01:34:20.3695729Z             {
2026-06-22T01:34:20.3695838Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.3695917Z               "line": 228
2026-06-22T01:34:20.3696007Z             },
2026-06-22T01:34:20.3696089Z             {
2026-06-22T01:34:20.3696199Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.3696293Z               "line": 247
2026-06-22T01:34:20.3696375Z             },
2026-06-22T01:34:20.3696461Z             {
2026-06-22T01:34:20.3696565Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.3696646Z               "line": 270
2026-06-22T01:34:20.3696729Z             }
2026-06-22T01:34:20.3696818Z           ]
2026-06-22T01:34:20.3696899Z         }
2026-06-22T01:34:20.3696980Z       }
2026-06-22T01:34:20.3697067Z     },
2026-06-22T01:34:20.3697152Z     {
2026-06-22T01:34:20.3697247Z       "id": "REQ-MSG-4",
2026-06-22T01:34:20.3698077Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-22T01:34:20.3698176Z       "requiredStages": [
2026-06-22T01:34:20.3698257Z         "impl",
2026-06-22T01:34:20.3698343Z         "unit",
2026-06-22T01:34:20.3698427Z         "int"
2026-06-22T01:34:20.3698513Z       ],
2026-06-22T01:34:20.3698598Z       "stages": {
2026-06-22T01:34:20.3698684Z         "doc": {
2026-06-22T01:34:20.3698774Z           "complete": false,
2026-06-22T01:34:20.3698860Z           "evidence": []
2026-06-22T01:34:20.3699018Z         },
2026-06-22T01:34:20.3699127Z         "impl": {
2026-06-22T01:34:20.3699208Z           "complete": true,
2026-06-22T01:34:20.3699295Z           "evidence": [
2026-06-22T01:34:20.3699385Z             {
2026-06-22T01:34:20.3699494Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3699576Z               "line": 19
2026-06-22T01:34:20.3699657Z             },
2026-06-22T01:34:20.3699733Z             {
2026-06-22T01:34:20.3699842Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3699930Z               "line": 46
2026-06-22T01:34:20.3700009Z             },
2026-06-22T01:34:20.3700086Z             {
2026-06-22T01:34:20.3700206Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.3700287Z               "line": 532
2026-06-22T01:34:20.3700372Z             },
2026-06-22T01:34:20.3700453Z             {
2026-06-22T01:34:20.3700554Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3700649Z               "line": 3110
2026-06-22T01:34:20.3700720Z             }
2026-06-22T01:34:20.3700806Z           ]
2026-06-22T01:34:20.3700884Z         },
2026-06-22T01:34:20.3700964Z         "int": {
2026-06-22T01:34:20.3701053Z           "complete": true,
2026-06-22T01:34:20.3701138Z           "evidence": [
2026-06-22T01:34:20.3701225Z             {
2026-06-22T01:34:20.3701346Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T01:34:20.3701426Z               "line": 98
2026-06-22T01:34:20.3701508Z             },
2026-06-22T01:34:20.3701595Z             {
2026-06-22T01:34:20.3701718Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T01:34:20.3701804Z               "line": 128
2026-06-22T01:34:20.3701886Z             }
2026-06-22T01:34:20.3701967Z           ]
2026-06-22T01:34:20.3702042Z         },
2026-06-22T01:34:20.3702123Z         "unit": {
2026-06-22T01:34:20.3702210Z           "complete": true,
2026-06-22T01:34:20.3702296Z           "evidence": [
2026-06-22T01:34:20.3702380Z             {
2026-06-22T01:34:20.3702491Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3702700Z               "line": 68
2026-06-22T01:34:20.3702787Z             },
2026-06-22T01:34:20.3702948Z             {
2026-06-22T01:34:20.3703063Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3703149Z               "line": 79
2026-06-22T01:34:20.3703234Z             },
2026-06-22T01:34:20.3703316Z             {
2026-06-22T01:34:20.3703417Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3703507Z               "line": 90
2026-06-22T01:34:20.3703587Z             },
2026-06-22T01:34:20.3703672Z             {
2026-06-22T01:34:20.3703777Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3703866Z               "line": 151
2026-06-22T01:34:20.3703946Z             }
2026-06-22T01:34:20.3704027Z           ]
2026-06-22T01:34:20.3704108Z         }
2026-06-22T01:34:20.3704181Z       }
2026-06-22T01:34:20.3704265Z     },
2026-06-22T01:34:20.3704351Z     {
2026-06-22T01:34:20.3704453Z       "id": "REQ-MSG-5",
2026-06-22T01:34:20.3705171Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-22T01:34:20.3705262Z       "requiredStages": [
2026-06-22T01:34:20.3705349Z         "doc",
2026-06-22T01:34:20.3705434Z         "impl",
2026-06-22T01:34:20.3705515Z         "unit"
2026-06-22T01:34:20.3705606Z       ],
2026-06-22T01:34:20.3705692Z       "stages": {
2026-06-22T01:34:20.3705777Z         "doc": {
2026-06-22T01:34:20.3705863Z           "complete": true,
2026-06-22T01:34:20.3705954Z           "evidence": [
2026-06-22T01:34:20.3706036Z             {
2026-06-22T01:34:20.3706134Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3706225Z               "line": 231
2026-06-22T01:34:20.3706303Z             }
2026-06-22T01:34:20.3706384Z           ]
2026-06-22T01:34:20.3706468Z         },
2026-06-22T01:34:20.3706558Z         "impl": {
2026-06-22T01:34:20.3706644Z           "complete": true,
2026-06-22T01:34:20.3706736Z           "evidence": [
2026-06-22T01:34:20.3706820Z             {
2026-06-22T01:34:20.3706935Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:34:20.3707021Z               "line": 60
2026-06-22T01:34:20.3707102Z             },
2026-06-22T01:34:20.3707178Z             {
2026-06-22T01:34:20.3707293Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3707378Z               "line": 126
2026-06-22T01:34:20.3707492Z             },
2026-06-22T01:34:20.3707574Z             {
2026-06-22T01:34:20.3707679Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3707760Z               "line": 135
2026-06-22T01:34:20.3707846Z             },
2026-06-22T01:34:20.3707928Z             {
2026-06-22T01:34:20.3708041Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3708131Z               "line": 149
2026-06-22T01:34:20.3708214Z             },
2026-06-22T01:34:20.3708304Z             {
2026-06-22T01:34:20.3708413Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3708499Z               "line": 178
2026-06-22T01:34:20.3708581Z             },
2026-06-22T01:34:20.3708666Z             {
2026-06-22T01:34:20.3708770Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3708851Z               "line": 2802
2026-06-22T01:34:20.3708932Z             }
2026-06-22T01:34:20.3709087Z           ]
2026-06-22T01:34:20.3709168Z         },
2026-06-22T01:34:20.3709249Z         "int": {
2026-06-22T01:34:20.3709344Z           "complete": true,
2026-06-22T01:34:20.3709420Z           "evidence": [
2026-06-22T01:34:20.3709502Z             {
2026-06-22T01:34:20.3709612Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T01:34:20.3709697Z               "line": 19
2026-06-22T01:34:20.3709777Z             }
2026-06-22T01:34:20.3709860Z           ]
2026-06-22T01:34:20.3710045Z         },
2026-06-22T01:34:20.3710131Z         "unit": {
2026-06-22T01:34:20.3710213Z           "complete": true,
2026-06-22T01:34:20.3710374Z           "evidence": [
2026-06-22T01:34:20.3710460Z             {
2026-06-22T01:34:20.3710565Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:34:20.3710646Z               "line": 192
2026-06-22T01:34:20.3710717Z             },
2026-06-22T01:34:20.3710795Z             {
2026-06-22T01:34:20.3710903Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T01:34:20.3710999Z               "line": 154
2026-06-22T01:34:20.3711076Z             },
2026-06-22T01:34:20.3711162Z             {
2026-06-22T01:34:20.3711270Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3711357Z               "line": 122
2026-06-22T01:34:20.3711439Z             },
2026-06-22T01:34:20.3711514Z             {
2026-06-22T01:34:20.3711623Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3711703Z               "line": 452
2026-06-22T01:34:20.3711794Z             },
2026-06-22T01:34:20.3711878Z             {
2026-06-22T01:34:20.3711986Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3712078Z               "line": 501
2026-06-22T01:34:20.3712155Z             },
2026-06-22T01:34:20.3712240Z             {
2026-06-22T01:34:20.3712349Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3712436Z               "line": 517
2026-06-22T01:34:20.3712522Z             },
2026-06-22T01:34:20.3712602Z             {
2026-06-22T01:34:20.3712718Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.3712803Z               "line": 536
2026-06-22T01:34:20.3712888Z             },
2026-06-22T01:34:20.3712969Z             {
2026-06-22T01:34:20.3713084Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3713175Z               "line": 7660
2026-06-22T01:34:20.3713251Z             }
2026-06-22T01:34:20.3713327Z           ]
2026-06-22T01:34:20.3713413Z         }
2026-06-22T01:34:20.3713499Z       }
2026-06-22T01:34:20.3713580Z     },
2026-06-22T01:34:20.3713662Z     {
2026-06-22T01:34:20.3713748Z       "id": "REQ-MSG-6",
2026-06-22T01:34:20.3715294Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-22T01:34:20.3715393Z       "requiredStages": [
2026-06-22T01:34:20.3715469Z         "doc",
2026-06-22T01:34:20.3715551Z         "impl",
2026-06-22T01:34:20.3715632Z         "unit"
2026-06-22T01:34:20.3715713Z       ],
2026-06-22T01:34:20.3715798Z       "stages": {
2026-06-22T01:34:20.3715899Z         "doc": {
2026-06-22T01:34:20.3715980Z           "complete": true,
2026-06-22T01:34:20.3716061Z           "evidence": [
2026-06-22T01:34:20.3716156Z             {
2026-06-22T01:34:20.3716352Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3716442Z               "line": 234
2026-06-22T01:34:20.3716529Z             }
2026-06-22T01:34:20.3716610Z           ]
2026-06-22T01:34:20.3716695Z         },
2026-06-22T01:34:20.3716780Z         "impl": {
2026-06-22T01:34:20.3716873Z           "complete": true,
2026-06-22T01:34:20.3716967Z           "evidence": [
2026-06-22T01:34:20.3717051Z             {
2026-06-22T01:34:20.3717185Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3717271Z               "line": 177
2026-06-22T01:34:20.3717357Z             },
2026-06-22T01:34:20.3717442Z             {
2026-06-22T01:34:20.3717572Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3717663Z               "line": 428
2026-06-22T01:34:20.3717825Z             },
2026-06-22T01:34:20.3717911Z             {
2026-06-22T01:34:20.3718019Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3718192Z               "line": 451
2026-06-22T01:34:20.3718272Z             },
2026-06-22T01:34:20.3718362Z             {
2026-06-22T01:34:20.3718473Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:34:20.3718559Z               "line": 89
2026-06-22T01:34:20.3718640Z             },
2026-06-22T01:34:20.3718715Z             {
2026-06-22T01:34:20.3718836Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3718925Z               "line": 155
2026-06-22T01:34:20.3719141Z             }
2026-06-22T01:34:20.3719226Z           ]
2026-06-22T01:34:20.3719311Z         },
2026-06-22T01:34:20.3719386Z         "int": {
2026-06-22T01:34:20.3719482Z           "complete": false,
2026-06-22T01:34:20.3719571Z           "evidence": []
2026-06-22T01:34:20.3719661Z         },
2026-06-22T01:34:20.3719742Z         "unit": {
2026-06-22T01:34:20.3719829Z           "complete": true,
2026-06-22T01:34:20.3719914Z           "evidence": [
2026-06-22T01:34:20.3719999Z             {
2026-06-22T01:34:20.3720125Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3720224Z               "line": 1746
2026-06-22T01:34:20.3720309Z             },
2026-06-22T01:34:20.3720382Z             {
2026-06-22T01:34:20.3720491Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:34:20.3720581Z               "line": 219
2026-06-22T01:34:20.3720662Z             }
2026-06-22T01:34:20.3720749Z           ]
2026-06-22T01:34:20.3720834Z         }
2026-06-22T01:34:20.3720924Z       }
2026-06-22T01:34:20.3721006Z     },
2026-06-22T01:34:20.3721088Z     {
2026-06-22T01:34:20.3721178Z       "id": "REQ-MSG-ENVELOPE",
2026-06-22T01:34:20.3724859Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-22T01:34:20.3725000Z       "requiredStages": [
2026-06-22T01:34:20.3725099Z         "doc",
2026-06-22T01:34:20.3725181Z         "impl",
2026-06-22T01:34:20.3725263Z         "unit",
2026-06-22T01:34:20.3725339Z         "int"
2026-06-22T01:34:20.3725423Z       ],
2026-06-22T01:34:20.3725505Z       "stages": {
2026-06-22T01:34:20.3725592Z         "doc": {
2026-06-22T01:34:20.3725686Z           "complete": true,
2026-06-22T01:34:20.3725772Z           "evidence": [
2026-06-22T01:34:20.3725859Z             {
2026-06-22T01:34:20.3726086Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T01:34:20.3726169Z               "line": 47
2026-06-22T01:34:20.3726254Z             }
2026-06-22T01:34:20.3726335Z           ]
2026-06-22T01:34:20.3726425Z         },
2026-06-22T01:34:20.3726507Z         "impl": {
2026-06-22T01:34:20.3726597Z           "complete": true,
2026-06-22T01:34:20.3726688Z           "evidence": [
2026-06-22T01:34:20.3726902Z             {
2026-06-22T01:34:20.3727017Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3727194Z               "line": 20
2026-06-22T01:34:20.3727274Z             },
2026-06-22T01:34:20.3727355Z             {
2026-06-22T01:34:20.3727461Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3727546Z               "line": 33
2026-06-22T01:34:20.3727630Z             },
2026-06-22T01:34:20.3727711Z             {
2026-06-22T01:34:20.3727818Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3727903Z               "line": 47
2026-06-22T01:34:20.3727988Z             },
2026-06-22T01:34:20.3728075Z             {
2026-06-22T01:34:20.3728184Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3728265Z               "line": 58
2026-06-22T01:34:20.3728351Z             },
2026-06-22T01:34:20.3728437Z             {
2026-06-22T01:34:20.3728542Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3728636Z               "line": 14
2026-06-22T01:34:20.3728723Z             },
2026-06-22T01:34:20.3728795Z             {
2026-06-22T01:34:20.3728904Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3729062Z               "line": 27
2026-06-22T01:34:20.3729143Z             },
2026-06-22T01:34:20.3729228Z             {
2026-06-22T01:34:20.3729334Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3729420Z               "line": 40
2026-06-22T01:34:20.3729504Z             },
2026-06-22T01:34:20.3729585Z             {
2026-06-22T01:34:20.3729701Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.3729781Z               "line": 92
2026-06-22T01:34:20.3729861Z             },
2026-06-22T01:34:20.3729946Z             {
2026-06-22T01:34:20.3730062Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.3730145Z               "line": 143
2026-06-22T01:34:20.3730221Z             },
2026-06-22T01:34:20.3730303Z             {
2026-06-22T01:34:20.3730408Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.3730507Z               "line": 216
2026-06-22T01:34:20.3730583Z             },
2026-06-22T01:34:20.3730665Z             {
2026-06-22T01:34:20.3730775Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.3730850Z               "line": 533
2026-06-22T01:34:20.3730937Z             },
2026-06-22T01:34:20.3731018Z             {
2026-06-22T01:34:20.3731132Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:34:20.3731218Z               "line": 78
2026-06-22T01:34:20.3731309Z             },
2026-06-22T01:34:20.3731394Z             {
2026-06-22T01:34:20.3731494Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3731581Z               "line": 3111
2026-06-22T01:34:20.3731662Z             }
2026-06-22T01:34:20.3731748Z           ]
2026-06-22T01:34:20.3731833Z         },
2026-06-22T01:34:20.3731920Z         "int": {
2026-06-22T01:34:20.3732024Z           "complete": true,
2026-06-22T01:34:20.3732114Z           "evidence": [
2026-06-22T01:34:20.3732191Z             {
2026-06-22T01:34:20.3732325Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-22T01:34:20.3732415Z               "line": 15
2026-06-22T01:34:20.3732501Z             }
2026-06-22T01:34:20.3732583Z           ]
2026-06-22T01:34:20.3732667Z         },
2026-06-22T01:34:20.3732757Z         "unit": {
2026-06-22T01:34:20.3732843Z           "complete": true,
2026-06-22T01:34:20.3732929Z           "evidence": [
2026-06-22T01:34:20.3733017Z             {
2026-06-22T01:34:20.3733126Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3733208Z               "line": 102
2026-06-22T01:34:20.3733299Z             },
2026-06-22T01:34:20.3733370Z             {
2026-06-22T01:34:20.3733484Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:34:20.3733561Z               "line": 137
2026-06-22T01:34:20.3733675Z             },
2026-06-22T01:34:20.3733962Z             {
2026-06-22T01:34:20.3734066Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3734342Z               "line": 98
2026-06-22T01:34:20.3734418Z             },
2026-06-22T01:34:20.3734506Z             {
2026-06-22T01:34:20.3734609Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3734695Z               "line": 106
2026-06-22T01:34:20.3734773Z             },
2026-06-22T01:34:20.3734844Z             {
2026-06-22T01:34:20.3734952Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3735029Z               "line": 113
2026-06-22T01:34:20.3735111Z             },
2026-06-22T01:34:20.3735197Z             {
2026-06-22T01:34:20.3735328Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:34:20.3735414Z               "line": 122
2026-06-22T01:34:20.3735532Z             }
2026-06-22T01:34:20.3735622Z           ]
2026-06-22T01:34:20.3735731Z         }
2026-06-22T01:34:20.3735828Z       }
2026-06-22T01:34:20.3735903Z     },
2026-06-22T01:34:20.3736002Z     {
2026-06-22T01:34:20.3736118Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-22T01:34:20.3741148Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-22T01:34:20.3741287Z       "requiredStages": [
2026-06-22T01:34:20.3741377Z         "doc",
2026-06-22T01:34:20.3741468Z         "impl",
2026-06-22T01:34:20.3741555Z         "unit",
2026-06-22T01:34:20.3741659Z         "int"
2026-06-22T01:34:20.3741739Z       ],
2026-06-22T01:34:20.3741827Z       "stages": {
2026-06-22T01:34:20.3741922Z         "doc": {
2026-06-22T01:34:20.3742021Z           "complete": true,
2026-06-22T01:34:20.3742107Z           "evidence": [
2026-06-22T01:34:20.3742189Z             {
2026-06-22T01:34:20.3742341Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T01:34:20.3742427Z               "line": 277
2026-06-22T01:34:20.3742513Z             },
2026-06-22T01:34:20.3742598Z             {
2026-06-22T01:34:20.3742707Z               "path": "docs/MANIFEST.md",
2026-06-22T01:34:20.3742790Z               "line": 198
2026-06-22T01:34:20.3742876Z             }
2026-06-22T01:34:20.3742955Z           ]
2026-06-22T01:34:20.3743042Z         },
2026-06-22T01:34:20.3743129Z         "impl": {
2026-06-22T01:34:20.3743219Z           "complete": true,
2026-06-22T01:34:20.3743308Z           "evidence": [
2026-06-22T01:34:20.3743398Z             {
2026-06-22T01:34:20.3743620Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.3743720Z               "line": 1126
2026-06-22T01:34:20.3744006Z             },
2026-06-22T01:34:20.3744098Z             {
2026-06-22T01:34:20.3744221Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:34:20.3744311Z               "line": 23
2026-06-22T01:34:20.3744403Z             },
2026-06-22T01:34:20.3744483Z             {
2026-06-22T01:34:20.3744606Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:34:20.3744698Z               "line": 91
2026-06-22T01:34:20.3744780Z             },
2026-06-22T01:34:20.3744870Z             {
2026-06-22T01:34:20.3744988Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:34:20.3745076Z               "line": 239
2026-06-22T01:34:20.3745155Z             },
2026-06-22T01:34:20.3745246Z             {
2026-06-22T01:34:20.3745357Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:34:20.3745442Z               "line": 287
2026-06-22T01:34:20.3745537Z             },
2026-06-22T01:34:20.3745618Z             {
2026-06-22T01:34:20.3745743Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:34:20.3745827Z               "line": 311
2026-06-22T01:34:20.3745907Z             },
2026-06-22T01:34:20.3745984Z             {
2026-06-22T01:34:20.3746111Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3746210Z               "line": 60
2026-06-22T01:34:20.3746287Z             },
2026-06-22T01:34:20.3746373Z             {
2026-06-22T01:34:20.3746497Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3746592Z               "line": 889
2026-06-22T01:34:20.3746674Z             }
2026-06-22T01:34:20.3746760Z           ]
2026-06-22T01:34:20.3746849Z         },
2026-06-22T01:34:20.3746916Z         "int": {
2026-06-22T01:34:20.3747007Z           "complete": true,
2026-06-22T01:34:20.3747088Z           "evidence": [
2026-06-22T01:34:20.3747178Z             {
2026-06-22T01:34:20.3747322Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.3747436Z               "line": 1119
2026-06-22T01:34:20.3747526Z             },
2026-06-22T01:34:20.3747604Z             {
2026-06-22T01:34:20.3747737Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.3747822Z               "line": 1224
2026-06-22T01:34:20.3747904Z             },
2026-06-22T01:34:20.3747989Z             {
2026-06-22T01:34:20.3748132Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.3748224Z               "line": 1292
2026-06-22T01:34:20.3748300Z             },
2026-06-22T01:34:20.3748380Z             {
2026-06-22T01:34:20.3748505Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:34:20.3748596Z               "line": 1385
2026-06-22T01:34:20.3748680Z             }
2026-06-22T01:34:20.3748747Z           ]
2026-06-22T01:34:20.3748832Z         },
2026-06-22T01:34:20.3748913Z         "unit": {
2026-06-22T01:34:20.3749089Z           "complete": true,
2026-06-22T01:34:20.3749180Z           "evidence": [
2026-06-22T01:34:20.3749272Z             {
2026-06-22T01:34:20.3749385Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.3749476Z               "line": 270
2026-06-22T01:34:20.3749562Z             },
2026-06-22T01:34:20.3749643Z             {
2026-06-22T01:34:20.3749771Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:34:20.3749854Z               "line": 350
2026-06-22T01:34:20.3749939Z             },
2026-06-22T01:34:20.3750024Z             {
2026-06-22T01:34:20.3750134Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:34:20.3750220Z               "line": 381
2026-06-22T01:34:20.3750301Z             },
2026-06-22T01:34:20.3750386Z             {
2026-06-22T01:34:20.3750507Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:34:20.3750692Z               "line": 411
2026-06-22T01:34:20.3750773Z             },
2026-06-22T01:34:20.3750859Z             {
2026-06-22T01:34:20.3751067Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:34:20.3751148Z               "line": 440
2026-06-22T01:34:20.3751233Z             },
2026-06-22T01:34:20.3751313Z             {
2026-06-22T01:34:20.3751423Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3751509Z               "line": 1181
2026-06-22T01:34:20.3751595Z             }
2026-06-22T01:34:20.3751684Z           ]
2026-06-22T01:34:20.3751762Z         }
2026-06-22T01:34:20.3751843Z       }
2026-06-22T01:34:20.3751928Z     },
2026-06-22T01:34:20.3752009Z     {
2026-06-22T01:34:20.3752105Z       "id": "REQ-NET-1",
2026-06-22T01:34:20.3752285Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-22T01:34:20.3752372Z       "requiredStages": [
2026-06-22T01:34:20.3752458Z         "impl",
2026-06-22T01:34:20.3752544Z         "unit",
2026-06-22T01:34:20.3752628Z         "int"
2026-06-22T01:34:20.3752716Z       ],
2026-06-22T01:34:20.3756382Z       "stages": {
2026-06-22T01:34:20.3756520Z         "doc": {
2026-06-22T01:34:20.3756625Z           "complete": false,
2026-06-22T01:34:20.3756718Z           "evidence": []
2026-06-22T01:34:20.3756808Z         },
2026-06-22T01:34:20.3756895Z         "impl": {
2026-06-22T01:34:20.3757000Z           "complete": true,
2026-06-22T01:34:20.3757090Z           "evidence": [
2026-06-22T01:34:20.3757176Z             {
2026-06-22T01:34:20.3757305Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3757380Z               "line": 54
2026-06-22T01:34:20.3757471Z             },
2026-06-22T01:34:20.3757549Z             {
2026-06-22T01:34:20.3757672Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3757757Z               "line": 594
2026-06-22T01:34:20.3757844Z             },
2026-06-22T01:34:20.3757929Z             {
2026-06-22T01:34:20.3758048Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:34:20.3758159Z               "line": 130
2026-06-22T01:34:20.3758249Z             },
2026-06-22T01:34:20.3758330Z             {
2026-06-22T01:34:20.3758464Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3758550Z               "line": 97
2026-06-22T01:34:20.3758630Z             },
2026-06-22T01:34:20.3758712Z             {
2026-06-22T01:34:20.3758827Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3758897Z               "line": 159
2026-06-22T01:34:20.3759080Z             },
2026-06-22T01:34:20.3759166Z             {
2026-06-22T01:34:20.3759283Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3759368Z               "line": 175
2026-06-22T01:34:20.3759440Z             },
2026-06-22T01:34:20.3759522Z             {
2026-06-22T01:34:20.3759626Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3759711Z               "line": 190
2026-06-22T01:34:20.3759793Z             },
2026-06-22T01:34:20.3759879Z             {
2026-06-22T01:34:20.3760002Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3760094Z               "line": 271
2026-06-22T01:34:20.3760175Z             },
2026-06-22T01:34:20.3760260Z             {
2026-06-22T01:34:20.3760375Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3760460Z               "line": 306
2026-06-22T01:34:20.3760546Z             },
2026-06-22T01:34:20.3760632Z             {
2026-06-22T01:34:20.3760743Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3760832Z               "line": 312
2026-06-22T01:34:20.3760918Z             },
2026-06-22T01:34:20.3761000Z             {
2026-06-22T01:34:20.3761124Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3761208Z               "line": 318
2026-06-22T01:34:20.3761295Z             },
2026-06-22T01:34:20.3761378Z             {
2026-06-22T01:34:20.3761632Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3761723Z               "line": 334
2026-06-22T01:34:20.3761911Z             },
2026-06-22T01:34:20.3761997Z             {
2026-06-22T01:34:20.3762108Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3762188Z               "line": 354
2026-06-22T01:34:20.3762274Z             },
2026-06-22T01:34:20.3762350Z             {
2026-06-22T01:34:20.3762464Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:34:20.3762554Z               "line": 35
2026-06-22T01:34:20.3762642Z             },
2026-06-22T01:34:20.3762713Z             {
2026-06-22T01:34:20.3762836Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:34:20.3762922Z               "line": 85
2026-06-22T01:34:20.3763009Z             },
2026-06-22T01:34:20.3763099Z             {
2026-06-22T01:34:20.3763213Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.3763304Z               "line": 138
2026-06-22T01:34:20.3763385Z             },
2026-06-22T01:34:20.3763466Z             {
2026-06-22T01:34:20.3763576Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3763667Z               "line": 2953
2026-06-22T01:34:20.3763742Z             },
2026-06-22T01:34:20.3763828Z             {
2026-06-22T01:34:20.3763934Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.3764024Z               "line": 17
2026-06-22T01:34:20.3764110Z             }
2026-06-22T01:34:20.3764182Z           ]
2026-06-22T01:34:20.3764268Z         },
2026-06-22T01:34:20.3764357Z         "int": {
2026-06-22T01:34:20.3764437Z           "complete": true,
2026-06-22T01:34:20.3764528Z           "evidence": [
2026-06-22T01:34:20.3764614Z             {
2026-06-22T01:34:20.3764736Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.3764821Z               "line": 341
2026-06-22T01:34:20.3764907Z             },
2026-06-22T01:34:20.3764984Z             {
2026-06-22T01:34:20.3765092Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3765179Z               "line": 675
2026-06-22T01:34:20.3765266Z             },
2026-06-22T01:34:20.3765356Z             {
2026-06-22T01:34:20.3765460Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3765552Z               "line": 973
2026-06-22T01:34:20.3765637Z             }
2026-06-22T01:34:20.3765722Z           ]
2026-06-22T01:34:20.3765799Z         },
2026-06-22T01:34:20.3765876Z         "unit": {
2026-06-22T01:34:20.3765975Z           "complete": true,
2026-06-22T01:34:20.3766065Z           "evidence": [
2026-06-22T01:34:20.3766153Z             {
2026-06-22T01:34:20.3766262Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3766347Z               "line": 651
2026-06-22T01:34:20.3766433Z             },
2026-06-22T01:34:20.3766515Z             {
2026-06-22T01:34:20.3766632Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3766729Z               "line": 686
2026-06-22T01:34:20.3766811Z             },
2026-06-22T01:34:20.3766896Z             {
2026-06-22T01:34:20.3767019Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.3767114Z               "line": 940
2026-06-22T01:34:20.3767199Z             },
2026-06-22T01:34:20.3767283Z             {
2026-06-22T01:34:20.3767397Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T01:34:20.3767474Z               "line": 201
2026-06-22T01:34:20.3767556Z             },
2026-06-22T01:34:20.3767635Z             {
2026-06-22T01:34:20.3767755Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3767846Z               "line": 442
2026-06-22T01:34:20.3767931Z             },
2026-06-22T01:34:20.3768017Z             {
2026-06-22T01:34:20.3768128Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3768218Z               "line": 456
2026-06-22T01:34:20.3768303Z             },
2026-06-22T01:34:20.3768508Z             {
2026-06-22T01:34:20.3768618Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3768772Z               "line": 475
2026-06-22T01:34:20.3768857Z             },
2026-06-22T01:34:20.3768933Z             {
2026-06-22T01:34:20.3769110Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:34:20.3769185Z               "line": 120
2026-06-22T01:34:20.3769272Z             },
2026-06-22T01:34:20.3769353Z             {
2026-06-22T01:34:20.3769472Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:34:20.3769557Z               "line": 163
2026-06-22T01:34:20.3769640Z             },
2026-06-22T01:34:20.3769726Z             {
2026-06-22T01:34:20.3769833Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:34:20.3769909Z               "line": 530
2026-06-22T01:34:20.3769990Z             },
2026-06-22T01:34:20.3770072Z             {
2026-06-22T01:34:20.3770186Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.3770267Z               "line": 616
2026-06-22T01:34:20.3770354Z             },
2026-06-22T01:34:20.3770430Z             {
2026-06-22T01:34:20.3770534Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.3770616Z               "line": 1006
2026-06-22T01:34:20.3770701Z             }
2026-06-22T01:34:20.3770792Z           ]
2026-06-22T01:34:20.3770872Z         }
2026-06-22T01:34:20.3770959Z       }
2026-06-22T01:34:20.3771044Z     },
2026-06-22T01:34:20.3771130Z     {
2026-06-22T01:34:20.3771215Z       "id": "REQ-NET-2",
2026-06-22T01:34:20.3771397Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-22T01:34:20.3771492Z       "requiredStages": [
2026-06-22T01:34:20.3771574Z         "impl"
2026-06-22T01:34:20.3771655Z       ],
2026-06-22T01:34:20.3771735Z       "stages": {
2026-06-22T01:34:20.3771821Z         "doc": {
2026-06-22T01:34:20.3771908Z           "complete": false,
2026-06-22T01:34:20.3771989Z           "evidence": []
2026-06-22T01:34:20.3772079Z         },
2026-06-22T01:34:20.3772159Z         "impl": {
2026-06-22T01:34:20.3772255Z           "complete": true,
2026-06-22T01:34:20.3772339Z           "evidence": [
2026-06-22T01:34:20.3772424Z             {
2026-06-22T01:34:20.3772543Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.3772630Z               "line": 57
2026-06-22T01:34:20.3772715Z             },
2026-06-22T01:34:20.3772795Z             {
2026-06-22T01:34:20.3772911Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3773001Z               "line": 71
2026-06-22T01:34:20.3773086Z             },
2026-06-22T01:34:20.3773158Z             {
2026-06-22T01:34:20.3773268Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3773344Z               "line": 81
2026-06-22T01:34:20.3773429Z             },
2026-06-22T01:34:20.3773512Z             {
2026-06-22T01:34:20.3773626Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3773716Z               "line": 159
2026-06-22T01:34:20.3773802Z             },
2026-06-22T01:34:20.3773874Z             {
2026-06-22T01:34:20.3773988Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3774073Z               "line": 175
2026-06-22T01:34:20.3774156Z             },
2026-06-22T01:34:20.3774241Z             {
2026-06-22T01:34:20.3774350Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:34:20.3774441Z               "line": 190
2026-06-22T01:34:20.3774527Z             }
2026-06-22T01:34:20.3774607Z           ]
2026-06-22T01:34:20.3774684Z         },
2026-06-22T01:34:20.3774775Z         "int": {
2026-06-22T01:34:20.3774866Z           "complete": false,
2026-06-22T01:34:20.3774955Z           "evidence": []
2026-06-22T01:34:20.3775040Z         },
2026-06-22T01:34:20.3775122Z         "unit": {
2026-06-22T01:34:20.3775220Z           "complete": true,
2026-06-22T01:34:20.3775301Z           "evidence": [
2026-06-22T01:34:20.3775386Z             {
2026-06-22T01:34:20.3775620Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.3775710Z               "line": 402
2026-06-22T01:34:20.3775883Z             }
2026-06-22T01:34:20.3775958Z           ]
2026-06-22T01:34:20.3776039Z         }
2026-06-22T01:34:20.3776121Z       }
2026-06-22T01:34:20.3776207Z     },
2026-06-22T01:34:20.3776292Z     {
2026-06-22T01:34:20.3776383Z       "id": "REQ-NET-3",
2026-06-22T01:34:20.3776555Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-22T01:34:20.3776655Z       "requiredStages": [
2026-06-22T01:34:20.3776746Z         "impl",
2026-06-22T01:34:20.3776822Z         "unit"
2026-06-22T01:34:20.3776903Z       ],
2026-06-22T01:34:20.3776989Z       "stages": {
2026-06-22T01:34:20.3777070Z         "doc": {
2026-06-22T01:34:20.3777160Z           "complete": false,
2026-06-22T01:34:20.3777246Z           "evidence": []
2026-06-22T01:34:20.3777328Z         },
2026-06-22T01:34:20.3777409Z         "impl": {
2026-06-22T01:34:20.3777512Z           "complete": true,
2026-06-22T01:34:20.3777597Z           "evidence": [
2026-06-22T01:34:20.3777684Z             {
2026-06-22T01:34:20.3777797Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3777890Z               "line": 39
2026-06-22T01:34:20.3777977Z             },
2026-06-22T01:34:20.3778063Z             {
2026-06-22T01:34:20.3778186Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3778263Z               "line": 182
2026-06-22T01:34:20.3778345Z             },
2026-06-22T01:34:20.3778440Z             {
2026-06-22T01:34:20.3778553Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:34:20.3778650Z               "line": 333
2026-06-22T01:34:20.3778726Z             },
2026-06-22T01:34:20.3778802Z             {
2026-06-22T01:34:20.3778911Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:34:20.3779069Z               "line": 36
2026-06-22T01:34:20.3779159Z             },
2026-06-22T01:34:20.3779240Z             {
2026-06-22T01:34:20.3779379Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3779465Z               "line": 158
2026-06-22T01:34:20.3779550Z             },
2026-06-22T01:34:20.3779632Z             {
2026-06-22T01:34:20.3779760Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3779841Z               "line": 238
2026-06-22T01:34:20.3779914Z             },
2026-06-22T01:34:20.3780004Z             {
2026-06-22T01:34:20.3780122Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3780215Z               "line": 259
2026-06-22T01:34:20.3780296Z             },
2026-06-22T01:34:20.3780370Z             {
2026-06-22T01:34:20.3780488Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3780565Z               "line": 317
2026-06-22T01:34:20.3780662Z             },
2026-06-22T01:34:20.3780741Z             {
2026-06-22T01:34:20.3780870Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3780947Z               "line": 336
2026-06-22T01:34:20.3781037Z             },
2026-06-22T01:34:20.3781127Z             {
2026-06-22T01:34:20.3781234Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3781319Z               "line": 374
2026-06-22T01:34:20.3781394Z             },
2026-06-22T01:34:20.3781476Z             {
2026-06-22T01:34:20.3781586Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3781672Z               "line": 419
2026-06-22T01:34:20.3781757Z             },
2026-06-22T01:34:20.3781839Z             {
2026-06-22T01:34:20.3781957Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3782043Z               "line": 432
2026-06-22T01:34:20.3782125Z             },
2026-06-22T01:34:20.3782207Z             {
2026-06-22T01:34:20.3782319Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.3782410Z               "line": 29
2026-06-22T01:34:20.3782498Z             },
2026-06-22T01:34:20.3782681Z             {
2026-06-22T01:34:20.3782795Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.3782984Z               "line": 72
2026-06-22T01:34:20.3783064Z             },
2026-06-22T01:34:20.3783146Z             {
2026-06-22T01:34:20.3783260Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.3783341Z               "line": 123
2026-06-22T01:34:20.3783422Z             }
2026-06-22T01:34:20.3783499Z           ]
2026-06-22T01:34:20.3783580Z         },
2026-06-22T01:34:20.3783666Z         "int": {
2026-06-22T01:34:20.3783752Z           "complete": false,
2026-06-22T01:34:20.3783842Z           "evidence": []
2026-06-22T01:34:20.3783927Z         },
2026-06-22T01:34:20.3784008Z         "unit": {
2026-06-22T01:34:20.3784096Z           "complete": true,
2026-06-22T01:34:20.3784186Z           "evidence": [
2026-06-22T01:34:20.3784266Z             {
2026-06-22T01:34:20.3784377Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:34:20.3784481Z               "line": 223
2026-06-22T01:34:20.3784562Z             },
2026-06-22T01:34:20.3784657Z             {
2026-06-22T01:34:20.3784768Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:34:20.3784857Z               "line": 351
2026-06-22T01:34:20.3784939Z             },
2026-06-22T01:34:20.3785021Z             {
2026-06-22T01:34:20.3785130Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:34:20.3785215Z               "line": 504
2026-06-22T01:34:20.3785302Z             },
2026-06-22T01:34:20.3785379Z             {
2026-06-22T01:34:20.3785496Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:34:20.3785576Z               "line": 93
2026-06-22T01:34:20.3785657Z             },
2026-06-22T01:34:20.3785738Z             {
2026-06-22T01:34:20.3785846Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:34:20.3785931Z               "line": 142
2026-06-22T01:34:20.3786009Z             },
2026-06-22T01:34:20.3786100Z             {
2026-06-22T01:34:20.3786222Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.3786314Z               "line": 315
2026-06-22T01:34:20.3786395Z             },
2026-06-22T01:34:20.3786476Z             {
2026-06-22T01:34:20.3786585Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.3786662Z               "line": 355
2026-06-22T01:34:20.3786753Z             },
2026-06-22T01:34:20.3786833Z             {
2026-06-22T01:34:20.3786948Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:34:20.3787043Z               "line": 494
2026-06-22T01:34:20.3787138Z             }
2026-06-22T01:34:20.3787224Z           ]
2026-06-22T01:34:20.3787306Z         }
2026-06-22T01:34:20.3787391Z       }
2026-06-22T01:34:20.3787482Z     },
2026-06-22T01:34:20.3787559Z     {
2026-06-22T01:34:20.3787669Z       "id": "REQ-NODE-IDENTITY",
2026-06-22T01:34:20.3787903Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-22T01:34:20.3788002Z       "requiredStages": [
2026-06-22T01:34:20.3788082Z         "impl",
2026-06-22T01:34:20.3788177Z         "unit"
2026-06-22T01:34:20.3788258Z       ],
2026-06-22T01:34:20.3788347Z       "stages": {
2026-06-22T01:34:20.3788427Z         "doc": {
2026-06-22T01:34:20.3788508Z           "complete": false,
2026-06-22T01:34:20.3788599Z           "evidence": []
2026-06-22T01:34:20.3788686Z         },
2026-06-22T01:34:20.3788765Z         "impl": {
2026-06-22T01:34:20.3788856Z           "complete": true,
2026-06-22T01:34:20.3789029Z           "evidence": [
2026-06-22T01:34:20.3789113Z             {
2026-06-22T01:34:20.3789229Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3789319Z               "line": 60
2026-06-22T01:34:20.3789400Z             },
2026-06-22T01:34:20.3789476Z             {
2026-06-22T01:34:20.3789601Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3789677Z               "line": 68
2026-06-22T01:34:20.3789873Z             },
2026-06-22T01:34:20.3789958Z             {
2026-06-22T01:34:20.3790077Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3790244Z               "line": 86
2026-06-22T01:34:20.3790340Z             },
2026-06-22T01:34:20.3790426Z             {
2026-06-22T01:34:20.3790536Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3790634Z               "line": 120
2026-06-22T01:34:20.3790706Z             },
2026-06-22T01:34:20.3790789Z             {
2026-06-22T01:34:20.3790907Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3791001Z               "line": 127
2026-06-22T01:34:20.3791087Z             },
2026-06-22T01:34:20.3791169Z             {
2026-06-22T01:34:20.3791273Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3791363Z               "line": 143
2026-06-22T01:34:20.3791445Z             },
2026-06-22T01:34:20.3791530Z             {
2026-06-22T01:34:20.3791659Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T01:34:20.3791746Z               "line": 16
2026-06-22T01:34:20.3791836Z             }
2026-06-22T01:34:20.3791922Z           ]
2026-06-22T01:34:20.3792007Z         },
2026-06-22T01:34:20.3792089Z         "int": {
2026-06-22T01:34:20.3792193Z           "complete": false,
2026-06-22T01:34:20.3792278Z           "evidence": []
2026-06-22T01:34:20.3792360Z         },
2026-06-22T01:34:20.3792442Z         "unit": {
2026-06-22T01:34:20.3792546Z           "complete": true,
2026-06-22T01:34:20.3792636Z           "evidence": [
2026-06-22T01:34:20.3792723Z             {
2026-06-22T01:34:20.3792837Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3792922Z               "line": 199
2026-06-22T01:34:20.3793014Z             },
2026-06-22T01:34:20.3793096Z             {
2026-06-22T01:34:20.3793213Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3793302Z               "line": 218
2026-06-22T01:34:20.3793399Z             },
2026-06-22T01:34:20.3793478Z             {
2026-06-22T01:34:20.3793596Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3793687Z               "line": 234
2026-06-22T01:34:20.3793764Z             },
2026-06-22T01:34:20.3793854Z             {
2026-06-22T01:34:20.3793964Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:34:20.3794045Z               "line": 256
2026-06-22T01:34:20.3794131Z             },
2026-06-22T01:34:20.3794211Z             {
2026-06-22T01:34:20.3794322Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T01:34:20.3794407Z               "line": 124
2026-06-22T01:34:20.3794492Z             },
2026-06-22T01:34:20.3794573Z             {
2026-06-22T01:34:20.3794694Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T01:34:20.3794784Z               "line": 140
2026-06-22T01:34:20.3794869Z             },
2026-06-22T01:34:20.3794956Z             {
2026-06-22T01:34:20.3795065Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T01:34:20.3795155Z               "line": 155
2026-06-22T01:34:20.3795227Z             }
2026-06-22T01:34:20.3795310Z           ]
2026-06-22T01:34:20.3795399Z         }
2026-06-22T01:34:20.3795484Z       }
2026-06-22T01:34:20.3795572Z     },
2026-06-22T01:34:20.3795657Z     {
2026-06-22T01:34:20.3795756Z       "id": "REQ-NOTIF-1",
2026-06-22T01:34:20.3796113Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-22T01:34:20.3796209Z       "requiredStages": [
2026-06-22T01:34:20.3796294Z         "impl",
2026-06-22T01:34:20.3796382Z         "unit",
2026-06-22T01:34:20.3796459Z         "int"
2026-06-22T01:34:20.3796535Z       ],
2026-06-22T01:34:20.3796626Z       "stages": {
2026-06-22T01:34:20.3796711Z         "doc": {
2026-06-22T01:34:20.3796811Z           "complete": false,
2026-06-22T01:34:20.3796903Z           "evidence": []
2026-06-22T01:34:20.3796984Z         },
2026-06-22T01:34:20.3797155Z         "impl": {
2026-06-22T01:34:20.3797246Z           "complete": true,
2026-06-22T01:34:20.3797403Z           "evidence": [
2026-06-22T01:34:20.3797489Z             {
2026-06-22T01:34:20.3797613Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3797698Z               "line": 514
2026-06-22T01:34:20.3797775Z             },
2026-06-22T01:34:20.3797857Z             {
2026-06-22T01:34:20.3797961Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3798047Z               "line": 30
2026-06-22T01:34:20.3798128Z             },
2026-06-22T01:34:20.3798219Z             {
2026-06-22T01:34:20.3798328Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3798419Z               "line": 69
2026-06-22T01:34:20.3798506Z             },
2026-06-22T01:34:20.3798590Z             {
2026-06-22T01:34:20.3798699Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3798780Z               "line": 93
2026-06-22T01:34:20.3798870Z             },
2026-06-22T01:34:20.3799034Z             {
2026-06-22T01:34:20.3799140Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3799227Z               "line": 107
2026-06-22T01:34:20.3799312Z             },
2026-06-22T01:34:20.3799393Z             {
2026-06-22T01:34:20.3799508Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3799593Z               "line": 142
2026-06-22T01:34:20.3799683Z             },
2026-06-22T01:34:20.3799766Z             {
2026-06-22T01:34:20.3799875Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3799955Z               "line": 187
2026-06-22T01:34:20.3800041Z             },
2026-06-22T01:34:20.3800128Z             {
2026-06-22T01:34:20.3800237Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3800322Z               "line": 258
2026-06-22T01:34:20.3800405Z             },
2026-06-22T01:34:20.3800490Z             {
2026-06-22T01:34:20.3800609Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3800705Z               "line": 372
2026-06-22T01:34:20.3800804Z             },
2026-06-22T01:34:20.3800880Z             {
2026-06-22T01:34:20.3800995Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3801077Z               "line": 479
2026-06-22T01:34:20.3801166Z             },
2026-06-22T01:34:20.3801248Z             {
2026-06-22T01:34:20.3801378Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3801467Z               "line": 24
2026-06-22T01:34:20.3801551Z             },
2026-06-22T01:34:20.3801637Z             {
2026-06-22T01:34:20.3801739Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3801833Z               "line": 34
2026-06-22T01:34:20.3801918Z             },
2026-06-22T01:34:20.3802001Z             {
2026-06-22T01:34:20.3802125Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3802204Z               "line": 60
2026-06-22T01:34:20.3802291Z             },
2026-06-22T01:34:20.3802378Z             {
2026-06-22T01:34:20.3802501Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3802582Z               "line": 82
2026-06-22T01:34:20.3802668Z             },
2026-06-22T01:34:20.3802758Z             {
2026-06-22T01:34:20.3802872Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3802964Z               "line": 94
2026-06-22T01:34:20.3803045Z             },
2026-06-22T01:34:20.3803135Z             {
2026-06-22T01:34:20.3803250Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3803341Z               "line": 96
2026-06-22T01:34:20.3803425Z             },
2026-06-22T01:34:20.3803506Z             {
2026-06-22T01:34:20.3803637Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-22T01:34:20.3803721Z               "line": 44
2026-06-22T01:34:20.3803811Z             },
2026-06-22T01:34:20.3803892Z             {
2026-06-22T01:34:20.3804118Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:34:20.3804204Z               "line": 20
2026-06-22T01:34:20.3804372Z             },
2026-06-22T01:34:20.3804452Z             {
2026-06-22T01:34:20.3804562Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:34:20.3804648Z               "line": 30
2026-06-22T01:34:20.3804733Z             },
2026-06-22T01:34:20.3804814Z             {
2026-06-22T01:34:20.3804930Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:34:20.3805016Z               "line": 50
2026-06-22T01:34:20.3805095Z             },
2026-06-22T01:34:20.3805173Z             {
2026-06-22T01:34:20.3805296Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3805382Z               "line": 28
2026-06-22T01:34:20.3805458Z             },
2026-06-22T01:34:20.3805545Z             {
2026-06-22T01:34:20.3805659Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3805744Z               "line": 126
2026-06-22T01:34:20.3805826Z             },
2026-06-22T01:34:20.3805912Z             {
2026-06-22T01:34:20.3806026Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3806122Z               "line": 161
2026-06-22T01:34:20.3806208Z             },
2026-06-22T01:34:20.3806287Z             {
2026-06-22T01:34:20.3806398Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3806485Z               "line": 202
2026-06-22T01:34:20.3806574Z             },
2026-06-22T01:34:20.3806664Z             {
2026-06-22T01:34:20.3806769Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3806864Z               "line": 213
2026-06-22T01:34:20.3806943Z             },
2026-06-22T01:34:20.3807033Z             {
2026-06-22T01:34:20.3807143Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3807234Z               "line": 238
2026-06-22T01:34:20.3807319Z             },
2026-06-22T01:34:20.3807400Z             {
2026-06-22T01:34:20.3807520Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3807610Z               "line": 261
2026-06-22T01:34:20.3807695Z             },
2026-06-22T01:34:20.3807778Z             {
2026-06-22T01:34:20.3807901Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.3807996Z               "line": 86
2026-06-22T01:34:20.3808078Z             }
2026-06-22T01:34:20.3808168Z           ]
2026-06-22T01:34:20.3808249Z         },
2026-06-22T01:34:20.3808339Z         "int": {
2026-06-22T01:34:20.3808427Z           "complete": true,
2026-06-22T01:34:20.3808521Z           "evidence": [
2026-06-22T01:34:20.3808607Z             {
2026-06-22T01:34:20.3808722Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.3808817Z               "line": 285
2026-06-22T01:34:20.3808897Z             },
2026-06-22T01:34:20.3809052Z             {
2026-06-22T01:34:20.3809160Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T01:34:20.3809249Z               "line": 145
2026-06-22T01:34:20.3809344Z             },
2026-06-22T01:34:20.3809416Z             {
2026-06-22T01:34:20.3809548Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3809628Z               "line": 684
2026-06-22T01:34:20.3809715Z             },
2026-06-22T01:34:20.3809796Z             {
2026-06-22T01:34:20.3809923Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3810011Z               "line": 1102
2026-06-22T01:34:20.3810277Z             }
2026-06-22T01:34:20.3810454Z           ]
2026-06-22T01:34:20.3810611Z         },
2026-06-22T01:34:20.3810782Z         "unit": {
2026-06-22T01:34:20.3810984Z           "complete": true,
2026-06-22T01:34:20.3811183Z           "evidence": [
2026-06-22T01:34:20.3811364Z             {
2026-06-22T01:34:20.3811575Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3811822Z               "line": 572
2026-06-22T01:34:20.3811999Z             },
2026-06-22T01:34:20.3812159Z             {
2026-06-22T01:34:20.3812464Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3812699Z               "line": 636
2026-06-22T01:34:20.3812985Z             },
2026-06-22T01:34:20.3813147Z             {
2026-06-22T01:34:20.3813347Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3813596Z               "line": 740
2026-06-22T01:34:20.3813781Z             },
2026-06-22T01:34:20.3813943Z             {
2026-06-22T01:34:20.3814129Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3814371Z               "line": 772
2026-06-22T01:34:20.3814557Z             },
2026-06-22T01:34:20.3814721Z             {
2026-06-22T01:34:20.3814914Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3815151Z               "line": 840
2026-06-22T01:34:20.3815322Z             },
2026-06-22T01:34:20.3815495Z             {
2026-06-22T01:34:20.3815684Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3815928Z               "line": 898
2026-06-22T01:34:20.3816115Z             },
2026-06-22T01:34:20.3816396Z             {
2026-06-22T01:34:20.3816605Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3816852Z               "line": 1173
2026-06-22T01:34:20.3817035Z             },
2026-06-22T01:34:20.3817191Z             {
2026-06-22T01:34:20.3817396Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3817651Z               "line": 157
2026-06-22T01:34:20.3817827Z             },
2026-06-22T01:34:20.3817985Z             {
2026-06-22T01:34:20.3822239Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3822517Z               "line": 250
2026-06-22T01:34:20.3822705Z             },
2026-06-22T01:34:20.3822878Z             {
2026-06-22T01:34:20.3823077Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:34:20.3823325Z               "line": 273
2026-06-22T01:34:20.3823502Z             },
2026-06-22T01:34:20.3823654Z             {
2026-06-22T01:34:20.3823855Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3824099Z               "line": 355
2026-06-22T01:34:20.3824279Z             },
2026-06-22T01:34:20.3824442Z             {
2026-06-22T01:34:20.3824627Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:34:20.3824907Z               "line": 392
2026-06-22T01:34:20.3825107Z             },
2026-06-22T01:34:20.3825258Z             {
2026-06-22T01:34:20.3825464Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T01:34:20.3825706Z               "line": 131
2026-06-22T01:34:20.3825882Z             },
2026-06-22T01:34:20.3826045Z             {
2026-06-22T01:34:20.3826235Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:34:20.3826474Z               "line": 72
2026-06-22T01:34:20.3826679Z             },
2026-06-22T01:34:20.3826855Z             {
2026-06-22T01:34:20.3827051Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:34:20.3827285Z               "line": 97
2026-06-22T01:34:20.3827451Z             },
2026-06-22T01:34:20.3827614Z             {
2026-06-22T01:34:20.3827798Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3828035Z               "line": 379
2026-06-22T01:34:20.3828206Z             },
2026-06-22T01:34:20.3828360Z             {
2026-06-22T01:34:20.3828559Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3828797Z               "line": 417
2026-06-22T01:34:20.3829073Z             },
2026-06-22T01:34:20.3829227Z             {
2026-06-22T01:34:20.3829417Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3829641Z               "line": 433
2026-06-22T01:34:20.3829824Z             },
2026-06-22T01:34:20.3829974Z             {
2026-06-22T01:34:20.3830162Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3830403Z               "line": 472
2026-06-22T01:34:20.3830583Z             },
2026-06-22T01:34:20.3831044Z             {
2026-06-22T01:34:20.3831236Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3831565Z               "line": 489
2026-06-22T01:34:20.3831732Z             },
2026-06-22T01:34:20.3831893Z             {
2026-06-22T01:34:20.3832075Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3832308Z               "line": 517
2026-06-22T01:34:20.3832485Z             },
2026-06-22T01:34:20.3832647Z             {
2026-06-22T01:34:20.3832832Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:34:20.3833058Z               "line": 548
2026-06-22T01:34:20.3833237Z             },
2026-06-22T01:34:20.3833424Z             {
2026-06-22T01:34:20.3833623Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.3833866Z               "line": 745
2026-06-22T01:34:20.3834043Z             }
2026-06-22T01:34:20.3834205Z           ]
2026-06-22T01:34:20.3834367Z         }
2026-06-22T01:34:20.3834529Z       }
2026-06-22T01:34:20.3834682Z     },
2026-06-22T01:34:20.3834839Z     {
2026-06-22T01:34:20.3834993Z       "id": "REQ-NOTIF-2",
2026-06-22T01:34:20.3835359Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-22T01:34:20.3835766Z       "requiredStages": [
2026-06-22T01:34:20.3835966Z         "doc",
2026-06-22T01:34:20.3836132Z         "impl",
2026-06-22T01:34:20.3836300Z         "unit",
2026-06-22T01:34:20.3836466Z         "int"
2026-06-22T01:34:20.3836620Z       ],
2026-06-22T01:34:20.3836771Z       "stages": {
2026-06-22T01:34:20.3836948Z         "doc": {
2026-06-22T01:34:20.3837134Z           "complete": true,
2026-06-22T01:34:20.3837329Z           "evidence": [
2026-06-22T01:34:20.3837512Z             {
2026-06-22T01:34:20.3837692Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.3837903Z               "line": 509
2026-06-22T01:34:20.3838078Z             },
2026-06-22T01:34:20.3838246Z             {
2026-06-22T01:34:20.3838415Z               "path": "docs/MANIFEST.md",
2026-06-22T01:34:20.3838643Z               "line": 123
2026-06-22T01:34:20.3838833Z             }
2026-06-22T01:34:20.3839062Z           ]
2026-06-22T01:34:20.3839224Z         },
2026-06-22T01:34:20.3839381Z         "impl": {
2026-06-22T01:34:20.3839587Z           "complete": true,
2026-06-22T01:34:20.3839778Z           "evidence": [
2026-06-22T01:34:20.3839953Z             {
2026-06-22T01:34:20.3840150Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3840389Z               "line": 287
2026-06-22T01:34:20.3840573Z             },
2026-06-22T01:34:20.3840737Z             {
2026-06-22T01:34:20.3840925Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3841162Z               "line": 301
2026-06-22T01:34:20.3841338Z             },
2026-06-22T01:34:20.3841505Z             {
2026-06-22T01:34:20.3841691Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3841924Z               "line": 326
2026-06-22T01:34:20.3842105Z             },
2026-06-22T01:34:20.3842262Z             {
2026-06-22T01:34:20.3842463Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.3842707Z               "line": 239
2026-06-22T01:34:20.3842888Z             },
2026-06-22T01:34:20.3843045Z             {
2026-06-22T01:34:20.3843241Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.3843478Z               "line": 95
2026-06-22T01:34:20.3843661Z             },
2026-06-22T01:34:20.3843816Z             {
2026-06-22T01:34:20.3843993Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3844212Z               "line": 2225
2026-06-22T01:34:20.3844398Z             },
2026-06-22T01:34:20.3844546Z             {
2026-06-22T01:34:20.3844727Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3844951Z               "line": 2274
2026-06-22T01:34:20.3845127Z             },
2026-06-22T01:34:20.3845285Z             {
2026-06-22T01:34:20.3845451Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3845790Z               "line": 2353
2026-06-22T01:34:20.3845971Z             },
2026-06-22T01:34:20.3846128Z             {
2026-06-22T01:34:20.3846396Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3846621Z               "line": 2392
2026-06-22T01:34:20.3846798Z             }
2026-06-22T01:34:20.3846960Z           ]
2026-06-22T01:34:20.3847118Z         },
2026-06-22T01:34:20.3847274Z         "int": {
2026-06-22T01:34:20.3847443Z           "complete": true,
2026-06-22T01:34:20.3847623Z           "evidence": [
2026-06-22T01:34:20.3847790Z             {
2026-06-22T01:34:20.3847980Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3848228Z               "line": 810
2026-06-22T01:34:20.3848406Z             },
2026-06-22T01:34:20.3848562Z             {
2026-06-22T01:34:20.3848758Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3849066Z               "line": 1345
2026-06-22T01:34:20.3849249Z             }
2026-06-22T01:34:20.3849418Z           ]
2026-06-22T01:34:20.3849574Z         },
2026-06-22T01:34:20.3849723Z         "unit": {
2026-06-22T01:34:20.3849902Z           "complete": true,
2026-06-22T01:34:20.3850099Z           "evidence": [
2026-06-22T01:34:20.3850275Z             {
2026-06-22T01:34:20.3850466Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3850705Z               "line": 1022
2026-06-22T01:34:20.3850876Z             },
2026-06-22T01:34:20.3851034Z             {
2026-06-22T01:34:20.3851220Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3851452Z               "line": 1090
2026-06-22T01:34:20.3851638Z             },
2026-06-22T01:34:20.3851788Z             {
2026-06-22T01:34:20.3851965Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3852188Z               "line": 8210
2026-06-22T01:34:20.3852371Z             },
2026-06-22T01:34:20.3852532Z             {
2026-06-22T01:34:20.3852709Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3852938Z               "line": 8265
2026-06-22T01:34:20.3853118Z             }
2026-06-22T01:34:20.3853281Z           ]
2026-06-22T01:34:20.3853438Z         }
2026-06-22T01:34:20.3853596Z       }
2026-06-22T01:34:20.3853753Z     },
2026-06-22T01:34:20.3853911Z     {
2026-06-22T01:34:20.3854072Z       "id": "REQ-PAIR-1",
2026-06-22T01:34:20.3854286Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-22T01:34:20.3854530Z       "requiredStages": [
2026-06-22T01:34:20.3854729Z         "impl",
2026-06-22T01:34:20.3854891Z         "unit",
2026-06-22T01:34:20.3855053Z         "int"
2026-06-22T01:34:20.3855211Z       ],
2026-06-22T01:34:20.3855373Z       "stages": {
2026-06-22T01:34:20.3855535Z         "doc": {
2026-06-22T01:34:20.3855716Z           "complete": false,
2026-06-22T01:34:20.3855921Z           "evidence": []
2026-06-22T01:34:20.3856108Z         },
2026-06-22T01:34:20.3856260Z         "impl": {
2026-06-22T01:34:20.3856447Z           "complete": true,
2026-06-22T01:34:20.3856645Z           "evidence": [
2026-06-22T01:34:20.3856834Z             {
2026-06-22T01:34:20.3857053Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.3857334Z               "line": 27
2026-06-22T01:34:20.3857515Z             },
2026-06-22T01:34:20.3857683Z             {
2026-06-22T01:34:20.3857887Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.3858135Z               "line": 88
2026-06-22T01:34:20.3858322Z             },
2026-06-22T01:34:20.3858488Z             {
2026-06-22T01:34:20.3858689Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.3859013Z               "line": 110
2026-06-22T01:34:20.3859194Z             },
2026-06-22T01:34:20.3859375Z             {
2026-06-22T01:34:20.3859574Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.3859824Z               "line": 153
2026-06-22T01:34:20.3860007Z             },
2026-06-22T01:34:20.3860172Z             {
2026-06-22T01:34:20.3860486Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.3860744Z               "line": 182
2026-06-22T01:34:20.3861021Z             },
2026-06-22T01:34:20.3861184Z             {
2026-06-22T01:34:20.3861384Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:34:20.3861646Z               "line": 29
2026-06-22T01:34:20.3861828Z             },
2026-06-22T01:34:20.3861994Z             {
2026-06-22T01:34:20.3862217Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:34:20.3862492Z               "line": 31
2026-06-22T01:34:20.3862672Z             },
2026-06-22T01:34:20.3862840Z             {
2026-06-22T01:34:20.3863049Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3863302Z               "line": 44
2026-06-22T01:34:20.3863479Z             },
2026-06-22T01:34:20.3863650Z             {
2026-06-22T01:34:20.3863851Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3864099Z               "line": 171
2026-06-22T01:34:20.3864275Z             },
2026-06-22T01:34:20.3864438Z             {
2026-06-22T01:34:20.3864652Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3864898Z               "line": 376
2026-06-22T01:34:20.3865085Z             }
2026-06-22T01:34:20.3865241Z           ]
2026-06-22T01:34:20.3865405Z         },
2026-06-22T01:34:20.3865570Z         "int": {
2026-06-22T01:34:20.3865748Z           "complete": true,
2026-06-22T01:34:20.3865942Z           "evidence": [
2026-06-22T01:34:20.3866133Z             {
2026-06-22T01:34:20.3866320Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3866577Z               "line": 645
2026-06-22T01:34:20.3866762Z             },
2026-06-22T01:34:20.3866925Z             {
2026-06-22T01:34:20.3867120Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3867367Z               "line": 887
2026-06-22T01:34:20.3867550Z             }
2026-06-22T01:34:20.3867728Z           ]
2026-06-22T01:34:20.3867889Z         },
2026-06-22T01:34:20.3868047Z         "unit": {
2026-06-22T01:34:20.3868223Z           "complete": true,
2026-06-22T01:34:20.3868418Z           "evidence": [
2026-06-22T01:34:20.3868596Z             {
2026-06-22T01:34:20.3868805Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.3869138Z               "line": 236
2026-06-22T01:34:20.3869324Z             },
2026-06-22T01:34:20.3869488Z             {
2026-06-22T01:34:20.3869692Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:34:20.3869944Z               "line": 349
2026-06-22T01:34:20.3870129Z             },
2026-06-22T01:34:20.3870289Z             {
2026-06-22T01:34:20.3870490Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:34:20.3870751Z               "line": 194
2026-06-22T01:34:20.3870924Z             },
2026-06-22T01:34:20.3871076Z             {
2026-06-22T01:34:20.3871281Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:34:20.3871543Z               "line": 216
2026-06-22T01:34:20.3871730Z             },
2026-06-22T01:34:20.3871887Z             {
2026-06-22T01:34:20.3872088Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:34:20.3872345Z               "line": 230
2026-06-22T01:34:20.3872525Z             },
2026-06-22T01:34:20.3872686Z             {
2026-06-22T01:34:20.3872880Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:34:20.3873133Z               "line": 242
2026-06-22T01:34:20.3873318Z             },
2026-06-22T01:34:20.3873476Z             {
2026-06-22T01:34:20.3873677Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:34:20.3873933Z               "line": 256
2026-06-22T01:34:20.3874110Z             },
2026-06-22T01:34:20.3874258Z             {
2026-06-22T01:34:20.3874458Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:34:20.3874711Z               "line": 270
2026-06-22T01:34:20.3875008Z             },
2026-06-22T01:34:20.3875173Z             {
2026-06-22T01:34:20.3875501Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:34:20.3875750Z               "line": 277
2026-06-22T01:34:20.3875931Z             },
2026-06-22T01:34:20.3876093Z             {
2026-06-22T01:34:20.3876299Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:34:20.3876551Z               "line": 295
2026-06-22T01:34:20.3876732Z             },
2026-06-22T01:34:20.3876894Z             {
2026-06-22T01:34:20.3877093Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3877355Z               "line": 968
2026-06-22T01:34:20.3877539Z             },
2026-06-22T01:34:20.3877708Z             {
2026-06-22T01:34:20.3877908Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3878159Z               "line": 1051
2026-06-22T01:34:20.3878349Z             },
2026-06-22T01:34:20.3878527Z             {
2026-06-22T01:34:20.3878735Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3879055Z               "line": 1121
2026-06-22T01:34:20.3879241Z             },
2026-06-22T01:34:20.3879428Z             {
2026-06-22T01:34:20.3879627Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3879880Z               "line": 1182
2026-06-22T01:34:20.3880067Z             },
2026-06-22T01:34:20.3880227Z             {
2026-06-22T01:34:20.3880420Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3880670Z               "line": 1238
2026-06-22T01:34:20.3880850Z             },
2026-06-22T01:34:20.3881007Z             {
2026-06-22T01:34:20.3881207Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3881450Z               "line": 1457
2026-06-22T01:34:20.3881631Z             }
2026-06-22T01:34:20.3881789Z           ]
2026-06-22T01:34:20.3881946Z         }
2026-06-22T01:34:20.3882103Z       }
2026-06-22T01:34:20.3882260Z     },
2026-06-22T01:34:20.3882423Z     {
2026-06-22T01:34:20.3882590Z       "id": "REQ-PAIR-2",
2026-06-22T01:34:20.3883095Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-22T01:34:20.3883370Z       "requiredStages": [],
2026-06-22T01:34:20.3883564Z       "stages": {
2026-06-22T01:34:20.3883736Z         "doc": {
2026-06-22T01:34:20.3883912Z           "complete": false,
2026-06-22T01:34:20.3884102Z           "evidence": []
2026-06-22T01:34:20.3884284Z         },
2026-06-22T01:34:20.3884441Z         "impl": {
2026-06-22T01:34:20.3884613Z           "complete": false,
2026-06-22T01:34:20.3884813Z           "evidence": []
2026-06-22T01:34:20.3884990Z         },
2026-06-22T01:34:20.3885152Z         "int": {
2026-06-22T01:34:20.3885328Z           "complete": false,
2026-06-22T01:34:20.3885525Z           "evidence": []
2026-06-22T01:34:20.3885710Z         },
2026-06-22T01:34:20.3885868Z         "unit": {
2026-06-22T01:34:20.3889576Z           "complete": false,
2026-06-22T01:34:20.3889835Z           "evidence": []
2026-06-22T01:34:20.3890031Z         }
2026-06-22T01:34:20.3890211Z       }
2026-06-22T01:34:20.3890365Z     },
2026-06-22T01:34:20.3890512Z     {
2026-06-22T01:34:20.3890666Z       "id": "REQ-PAIR-3",
2026-06-22T01:34:20.3890913Z       "title": "Fetch current pairing code from any paired node",
2026-06-22T01:34:20.3891197Z       "requiredStages": [
2026-06-22T01:34:20.3891387Z         "impl",
2026-06-22T01:34:20.3891547Z         "unit"
2026-06-22T01:34:20.3891706Z       ],
2026-06-22T01:34:20.3891867Z       "stages": {
2026-06-22T01:34:20.3892025Z         "doc": {
2026-06-22T01:34:20.3892201Z           "complete": false,
2026-06-22T01:34:20.3892406Z           "evidence": []
2026-06-22T01:34:20.3892583Z         },
2026-06-22T01:34:20.3892735Z         "impl": {
2026-06-22T01:34:20.3892913Z           "complete": true,
2026-06-22T01:34:20.3893107Z           "evidence": [
2026-06-22T01:34:20.3893284Z             {
2026-06-22T01:34:20.3893631Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3893864Z               "line": 3259
2026-06-22T01:34:20.3894148Z             },
2026-06-22T01:34:20.3894301Z             {
2026-06-22T01:34:20.3894477Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3894701Z               "line": 3328
2026-06-22T01:34:20.3894882Z             },
2026-06-22T01:34:20.3895035Z             {
2026-06-22T01:34:20.3895211Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3895436Z               "line": 3709
2026-06-22T01:34:20.3895612Z             },
2026-06-22T01:34:20.3895770Z             {
2026-06-22T01:34:20.3895950Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3896179Z               "line": 4961
2026-06-22T01:34:20.3896357Z             }
2026-06-22T01:34:20.3896513Z           ]
2026-06-22T01:34:20.3896679Z         },
2026-06-22T01:34:20.3896832Z         "int": {
2026-06-22T01:34:20.3897003Z           "complete": false,
2026-06-22T01:34:20.3897199Z           "evidence": []
2026-06-22T01:34:20.3897390Z         },
2026-06-22T01:34:20.3897546Z         "unit": {
2026-06-22T01:34:20.3897733Z           "complete": true,
2026-06-22T01:34:20.3897928Z           "evidence": [
2026-06-22T01:34:20.3898105Z             {
2026-06-22T01:34:20.3898281Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3898510Z               "line": 9964
2026-06-22T01:34:20.3898692Z             },
2026-06-22T01:34:20.3898847Z             {
2026-06-22T01:34:20.3899122Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3899347Z               "line": 10179
2026-06-22T01:34:20.3899526Z             },
2026-06-22T01:34:20.3899680Z             {
2026-06-22T01:34:20.3899860Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3900085Z               "line": 10838
2026-06-22T01:34:20.3900271Z             },
2026-06-22T01:34:20.3900424Z             {
2026-06-22T01:34:20.3900591Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3900853Z               "line": 10857
2026-06-22T01:34:20.3901033Z             },
2026-06-22T01:34:20.3901197Z             {
2026-06-22T01:34:20.3901367Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3901583Z               "line": 10881
2026-06-22T01:34:20.3901762Z             },
2026-06-22T01:34:20.3901919Z             {
2026-06-22T01:34:20.3902098Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3902323Z               "line": 10900
2026-06-22T01:34:20.3902500Z             },
2026-06-22T01:34:20.3902656Z             {
2026-06-22T01:34:20.3902829Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3903047Z               "line": 10913
2026-06-22T01:34:20.3903224Z             },
2026-06-22T01:34:20.3903381Z             {
2026-06-22T01:34:20.3903557Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3903778Z               "line": 10922
2026-06-22T01:34:20.3903953Z             }
2026-06-22T01:34:20.3904112Z           ]
2026-06-22T01:34:20.3904267Z         }
2026-06-22T01:34:20.3904429Z       }
2026-06-22T01:34:20.3904584Z     },
2026-06-22T01:34:20.3904742Z     {
2026-06-22T01:34:20.3904917Z       "id": "REQ-PAIR-4",
2026-06-22T01:34:20.3905128Z       "title": "Subnet naming on first pairing",
2026-06-22T01:34:20.3905372Z       "requiredStages": [
2026-06-22T01:34:20.3905561Z         "impl",
2026-06-22T01:34:20.3905734Z         "unit"
2026-06-22T01:34:20.3905885Z       ],
2026-06-22T01:34:20.3906040Z       "stages": {
2026-06-22T01:34:20.3906195Z         "doc": {
2026-06-22T01:34:20.3906368Z           "complete": false,
2026-06-22T01:34:20.3906568Z           "evidence": []
2026-06-22T01:34:20.3906748Z         },
2026-06-22T01:34:20.3906907Z         "impl": {
2026-06-22T01:34:20.3907087Z           "complete": true,
2026-06-22T01:34:20.3907272Z           "evidence": [
2026-06-22T01:34:20.3907444Z             {
2026-06-22T01:34:20.3907635Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:34:20.3907873Z               "line": 174
2026-06-22T01:34:20.3908159Z             }
2026-06-22T01:34:20.3908317Z           ]
2026-06-22T01:34:20.3908474Z         },
2026-06-22T01:34:20.3908722Z         "int": {
2026-06-22T01:34:20.3908890Z           "complete": false,
2026-06-22T01:34:20.3909161Z           "evidence": []
2026-06-22T01:34:20.3909356Z         },
2026-06-22T01:34:20.3909512Z         "unit": {
2026-06-22T01:34:20.3909677Z           "complete": true,
2026-06-22T01:34:20.3909868Z           "evidence": [
2026-06-22T01:34:20.3910030Z             {
2026-06-22T01:34:20.3910231Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3910493Z               "line": 1294
2026-06-22T01:34:20.3910678Z             }
2026-06-22T01:34:20.3910827Z           ]
2026-06-22T01:34:20.3910993Z         }
2026-06-22T01:34:20.3911142Z       }
2026-06-22T01:34:20.3911284Z     },
2026-06-22T01:34:20.3911438Z     {
2026-06-22T01:34:20.3911608Z       "id": "REQ-PAIR-5",
2026-06-22T01:34:20.3912009Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-22T01:34:20.3912436Z       "requiredStages": [
2026-06-22T01:34:20.3912625Z         "impl",
2026-06-22T01:34:20.3912797Z         "unit",
2026-06-22T01:34:20.3912958Z         "int"
2026-06-22T01:34:20.3913117Z       ],
2026-06-22T01:34:20.3913273Z       "stages": {
2026-06-22T01:34:20.3913432Z         "doc": {
2026-06-22T01:34:20.3913602Z           "complete": false,
2026-06-22T01:34:20.3913807Z           "evidence": []
2026-06-22T01:34:20.3913990Z         },
2026-06-22T01:34:20.3914150Z         "impl": {
2026-06-22T01:34:20.3914324Z           "complete": true,
2026-06-22T01:34:20.3914518Z           "evidence": [
2026-06-22T01:34:20.3914686Z             {
2026-06-22T01:34:20.3914884Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3915125Z               "line": 44
2026-06-22T01:34:20.3915306Z             },
2026-06-22T01:34:20.3915463Z             {
2026-06-22T01:34:20.3915655Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3915741Z               "line": 96
2026-06-22T01:34:20.3915830Z             },
2026-06-22T01:34:20.3915917Z             {
2026-06-22T01:34:20.3916036Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3916131Z               "line": 107
2026-06-22T01:34:20.3916203Z             },
2026-06-22T01:34:20.3916285Z             {
2026-06-22T01:34:20.3916503Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3916585Z               "line": 124
2026-06-22T01:34:20.3916670Z             },
2026-06-22T01:34:20.3916760Z             {
2026-06-22T01:34:20.3916881Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3916966Z               "line": 155
2026-06-22T01:34:20.3917052Z             },
2026-06-22T01:34:20.3917133Z             {
2026-06-22T01:34:20.3917253Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3917342Z               "line": 195
2026-06-22T01:34:20.3917428Z             },
2026-06-22T01:34:20.3917515Z             {
2026-06-22T01:34:20.3917628Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3917713Z               "line": 251
2026-06-22T01:34:20.3917794Z             },
2026-06-22T01:34:20.3917876Z             {
2026-06-22T01:34:20.3918009Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:34:20.3918099Z               "line": 33
2026-06-22T01:34:20.3918186Z             },
2026-06-22T01:34:20.3918272Z             {
2026-06-22T01:34:20.3918404Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:34:20.3918492Z               "line": 45
2026-06-22T01:34:20.3918577Z             },
2026-06-22T01:34:20.3918657Z             {
2026-06-22T01:34:20.3918782Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:34:20.3918872Z               "line": 59
2026-06-22T01:34:20.3919010Z             },
2026-06-22T01:34:20.3919197Z             {
2026-06-22T01:34:20.3919310Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3919488Z               "line": 376
2026-06-22T01:34:20.3919572Z             }
2026-06-22T01:34:20.3919649Z           ]
2026-06-22T01:34:20.3919740Z         },
2026-06-22T01:34:20.3919835Z         "int": {
2026-06-22T01:34:20.3919925Z           "complete": true,
2026-06-22T01:34:20.3920006Z           "evidence": [
2026-06-22T01:34:20.3920087Z             {
2026-06-22T01:34:20.3920209Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.3920303Z               "line": 887
2026-06-22T01:34:20.3920375Z             },
2026-06-22T01:34:20.3920457Z             {
2026-06-22T01:34:20.3920581Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3920661Z               "line": 342
2026-06-22T01:34:20.3920752Z             }
2026-06-22T01:34:20.3920834Z           ]
2026-06-22T01:34:20.3920919Z         },
2026-06-22T01:34:20.3921014Z         "unit": {
2026-06-22T01:34:20.3921096Z           "complete": true,
2026-06-22T01:34:20.3921191Z           "evidence": [
2026-06-22T01:34:20.3921271Z             {
2026-06-22T01:34:20.3921396Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3921491Z               "line": 293
2026-06-22T01:34:20.3921562Z             },
2026-06-22T01:34:20.3921649Z             {
2026-06-22T01:34:20.3921758Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3921853Z               "line": 304
2026-06-22T01:34:20.3921934Z             },
2026-06-22T01:34:20.3922017Z             {
2026-06-22T01:34:20.3922144Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.3922230Z               "line": 406
2026-06-22T01:34:20.3922308Z             },
2026-06-22T01:34:20.3922388Z             {
2026-06-22T01:34:20.3922521Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:34:20.3922608Z               "line": 72
2026-06-22T01:34:20.3922684Z             },
2026-06-22T01:34:20.3922769Z             {
2026-06-22T01:34:20.3922901Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:34:20.3922992Z               "line": 82
2026-06-22T01:34:20.3923067Z             },
2026-06-22T01:34:20.3923152Z             {
2026-06-22T01:34:20.3923281Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:34:20.3923367Z               "line": 100
2026-06-22T01:34:20.3923453Z             },
2026-06-22T01:34:20.3923533Z             {
2026-06-22T01:34:20.3923663Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:34:20.3923748Z               "line": 110
2026-06-22T01:34:20.3923833Z             },
2026-06-22T01:34:20.3923921Z             {
2026-06-22T01:34:20.3924049Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:34:20.3924143Z               "line": 125
2026-06-22T01:34:20.3924230Z             },
2026-06-22T01:34:20.3924321Z             {
2026-06-22T01:34:20.3924439Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3924530Z               "line": 1044
2026-06-22T01:34:20.3924612Z             },
2026-06-22T01:34:20.3924687Z             {
2026-06-22T01:34:20.3924811Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3924898Z               "line": 1110
2026-06-22T01:34:20.3924983Z             },
2026-06-22T01:34:20.3925064Z             {
2026-06-22T01:34:20.3925189Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.3925270Z               "line": 1357
2026-06-22T01:34:20.3925350Z             }
2026-06-22T01:34:20.3925435Z           ]
2026-06-22T01:34:20.3925516Z         }
2026-06-22T01:34:20.3925601Z       }
2026-06-22T01:34:20.3925676Z     },
2026-06-22T01:34:20.3925761Z     {
2026-06-22T01:34:20.3925857Z       "id": "REQ-PAIR-6",
2026-06-22T01:34:20.3926109Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-22T01:34:20.3926287Z       "requiredStages": [
2026-06-22T01:34:20.3926463Z         "impl",
2026-06-22T01:34:20.3926544Z         "unit"
2026-06-22T01:34:20.3926625Z       ],
2026-06-22T01:34:20.3926710Z       "stages": {
2026-06-22T01:34:20.3926802Z         "doc": {
2026-06-22T01:34:20.3926887Z           "complete": false,
2026-06-22T01:34:20.3926978Z           "evidence": []
2026-06-22T01:34:20.3927059Z         },
2026-06-22T01:34:20.3927145Z         "impl": {
2026-06-22T01:34:20.3927225Z           "complete": true,
2026-06-22T01:34:20.3927311Z           "evidence": [
2026-06-22T01:34:20.3927402Z             {
2026-06-22T01:34:20.3927508Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3927597Z               "line": 3328
2026-06-22T01:34:20.3927683Z             },
2026-06-22T01:34:20.3927765Z             {
2026-06-22T01:34:20.3927869Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3927960Z               "line": 3709
2026-06-22T01:34:20.3928047Z             },
2026-06-22T01:34:20.3928128Z             {
2026-06-22T01:34:20.3928245Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3928330Z               "line": 18
2026-06-22T01:34:20.3928402Z             },
2026-06-22T01:34:20.3928479Z             {
2026-06-22T01:34:20.3928578Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3928669Z               "line": 49
2026-06-22T01:34:20.3928756Z             },
2026-06-22T01:34:20.3928837Z             {
2026-06-22T01:34:20.3929008Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3929094Z               "line": 318
2026-06-22T01:34:20.3929175Z             }
2026-06-22T01:34:20.3929265Z           ]
2026-06-22T01:34:20.3929356Z         },
2026-06-22T01:34:20.3929437Z         "int": {
2026-06-22T01:34:20.3929523Z           "complete": false,
2026-06-22T01:34:20.3929613Z           "evidence": []
2026-06-22T01:34:20.3929695Z         },
2026-06-22T01:34:20.3929780Z         "unit": {
2026-06-22T01:34:20.3929880Z           "complete": true,
2026-06-22T01:34:20.3929967Z           "evidence": [
2026-06-22T01:34:20.3930058Z             {
2026-06-22T01:34:20.3930161Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3930243Z               "line": 10935
2026-06-22T01:34:20.3930325Z             },
2026-06-22T01:34:20.3930405Z             {
2026-06-22T01:34:20.3930509Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3930599Z               "line": 10952
2026-06-22T01:34:20.3930685Z             },
2026-06-22T01:34:20.3930764Z             {
2026-06-22T01:34:20.3930873Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3930964Z               "line": 383
2026-06-22T01:34:20.3931036Z             },
2026-06-22T01:34:20.3931117Z             {
2026-06-22T01:34:20.3931226Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:34:20.3931313Z               "line": 392
2026-06-22T01:34:20.3931403Z             }
2026-06-22T01:34:20.3931488Z           ]
2026-06-22T01:34:20.3931565Z         }
2026-06-22T01:34:20.3931646Z       }
2026-06-22T01:34:20.3931741Z     },
2026-06-22T01:34:20.3931827Z     {
2026-06-22T01:34:20.3931919Z       "id": "REQ-PAIR-7",
2026-06-22T01:34:20.3932075Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-22T01:34:20.3932165Z       "requiredStages": [],
2026-06-22T01:34:20.3932248Z       "stages": {
2026-06-22T01:34:20.3932332Z         "doc": {
2026-06-22T01:34:20.3932423Z           "complete": false,
2026-06-22T01:34:20.3932519Z           "evidence": []
2026-06-22T01:34:20.3932591Z         },
2026-06-22T01:34:20.3932676Z         "impl": {
2026-06-22T01:34:20.3932771Z           "complete": false,
2026-06-22T01:34:20.3932853Z           "evidence": []
2026-06-22T01:34:20.3932934Z         },
2026-06-22T01:34:20.3933014Z         "int": {
2026-06-22T01:34:20.3933101Z           "complete": false,
2026-06-22T01:34:20.3933182Z           "evidence": []
2026-06-22T01:34:20.3933367Z         },
2026-06-22T01:34:20.3933447Z         "unit": {
2026-06-22T01:34:20.3933543Z           "complete": false,
2026-06-22T01:34:20.3933717Z           "evidence": []
2026-06-22T01:34:20.3933803Z         }
2026-06-22T01:34:20.3933889Z       }
2026-06-22T01:34:20.3933970Z     },
2026-06-22T01:34:20.3934050Z     {
2026-06-22T01:34:20.3934127Z       "id": "REQ-PAIR-8",
2026-06-22T01:34:20.3935539Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-22T01:34:20.3935639Z       "requiredStages": [
2026-06-22T01:34:20.3935720Z         "impl",
2026-06-22T01:34:20.3935811Z         "unit"
2026-06-22T01:34:20.3935910Z       ],
2026-06-22T01:34:20.3936004Z       "stages": {
2026-06-22T01:34:20.3936086Z         "doc": {
2026-06-22T01:34:20.3936180Z           "complete": false,
2026-06-22T01:34:20.3936274Z           "evidence": []
2026-06-22T01:34:20.3936355Z         },
2026-06-22T01:34:20.3936441Z         "impl": {
2026-06-22T01:34:20.3936537Z           "complete": true,
2026-06-22T01:34:20.3936631Z           "evidence": [
2026-06-22T01:34:20.3936713Z             {
2026-06-22T01:34:20.3936842Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.3936936Z               "line": 577
2026-06-22T01:34:20.3937018Z             },
2026-06-22T01:34:20.3937104Z             {
2026-06-22T01:34:20.3937232Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:34:20.3937318Z               "line": 22
2026-06-22T01:34:20.3937405Z             },
2026-06-22T01:34:20.3937489Z             {
2026-06-22T01:34:20.3937619Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:34:20.3937701Z               "line": 76
2026-06-22T01:34:20.3937781Z             },
2026-06-22T01:34:20.3937867Z             {
2026-06-22T01:34:20.3937997Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:34:20.3938091Z               "line": 127
2026-06-22T01:34:20.3938162Z             }
2026-06-22T01:34:20.3938248Z           ]
2026-06-22T01:34:20.3938325Z         },
2026-06-22T01:34:20.3938411Z         "int": {
2026-06-22T01:34:20.3938501Z           "complete": false,
2026-06-22T01:34:20.3938592Z           "evidence": []
2026-06-22T01:34:20.3938674Z         },
2026-06-22T01:34:20.3938758Z         "unit": {
2026-06-22T01:34:20.3938843Z           "complete": true,
2026-06-22T01:34:20.3938919Z           "evidence": [
2026-06-22T01:34:20.3939073Z             {
2026-06-22T01:34:20.3939191Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:34:20.3939282Z               "line": 183
2026-06-22T01:34:20.3939368Z             },
2026-06-22T01:34:20.3939453Z             {
2026-06-22T01:34:20.3939578Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:34:20.3939669Z               "line": 195
2026-06-22T01:34:20.3939754Z             },
2026-06-22T01:34:20.3939834Z             {
2026-06-22T01:34:20.3939960Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:34:20.3940040Z               "line": 211
2026-06-22T01:34:20.3940125Z             },
2026-06-22T01:34:20.3940212Z             {
2026-06-22T01:34:20.3940331Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:34:20.3940412Z               "line": 227
2026-06-22T01:34:20.3940498Z             }
2026-06-22T01:34:20.3940575Z           ]
2026-06-22T01:34:20.3940655Z         }
2026-06-22T01:34:20.3940731Z       }
2026-06-22T01:34:20.3940817Z     },
2026-06-22T01:34:20.3940900Z     {
2026-06-22T01:34:20.3940993Z       "id": "REQ-PICKER-1",
2026-06-22T01:34:20.3944549Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-22T01:34:20.3944916Z       "requiredStages": [
2026-06-22T01:34:20.3945002Z         "impl",
2026-06-22T01:34:20.3945083Z         "unit"
2026-06-22T01:34:20.3945169Z       ],
2026-06-22T01:34:20.3945254Z       "stages": {
2026-06-22T01:34:20.3945336Z         "doc": {
2026-06-22T01:34:20.3945436Z           "complete": false,
2026-06-22T01:34:20.3945526Z           "evidence": []
2026-06-22T01:34:20.3945607Z         },
2026-06-22T01:34:20.3945699Z         "impl": {
2026-06-22T01:34:20.3945788Z           "complete": true,
2026-06-22T01:34:20.3945879Z           "evidence": [
2026-06-22T01:34:20.3945961Z             {
2026-06-22T01:34:20.3946094Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.3946189Z               "line": 248
2026-06-22T01:34:20.3946271Z             },
2026-06-22T01:34:20.3946352Z             {
2026-06-22T01:34:20.3946470Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.3946569Z               "line": 263
2026-06-22T01:34:20.3946656Z             }
2026-06-22T01:34:20.3946749Z           ]
2026-06-22T01:34:20.3946829Z         },
2026-06-22T01:34:20.3946915Z         "int": {
2026-06-22T01:34:20.3947016Z           "complete": false,
2026-06-22T01:34:20.3947097Z           "evidence": []
2026-06-22T01:34:20.3947181Z         },
2026-06-22T01:34:20.3947268Z         "unit": {
2026-06-22T01:34:20.3947355Z           "complete": true,
2026-06-22T01:34:20.3947454Z           "evidence": [
2026-06-22T01:34:20.3947535Z             {
2026-06-22T01:34:20.3947650Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.3947731Z               "line": 476
2026-06-22T01:34:20.3947811Z             },
2026-06-22T01:34:20.3947898Z             {
2026-06-22T01:34:20.3948017Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.3948103Z               "line": 753
2026-06-22T01:34:20.3948184Z             },
2026-06-22T01:34:20.3948270Z             {
2026-06-22T01:34:20.3948379Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.3948469Z               "line": 886
2026-06-22T01:34:20.3948557Z             },
2026-06-22T01:34:20.3948642Z             {
2026-06-22T01:34:20.3948761Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:34:20.3948842Z               "line": 455
2026-06-22T01:34:20.3948924Z             }
2026-06-22T01:34:20.3949090Z           ]
2026-06-22T01:34:20.3949172Z         }
2026-06-22T01:34:20.3949258Z       }
2026-06-22T01:34:20.3949337Z     },
2026-06-22T01:34:20.3949422Z     {
2026-06-22T01:34:20.3949508Z       "id": "REQ-PICKER-2",
2026-06-22T01:34:20.3951392Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-22T01:34:20.3951704Z       "requiredStages": [
2026-06-22T01:34:20.3951786Z         "impl",
2026-06-22T01:34:20.3951871Z         "unit"
2026-06-22T01:34:20.3951956Z       ],
2026-06-22T01:34:20.3952041Z       "stages": {
2026-06-22T01:34:20.3952128Z         "doc": {
2026-06-22T01:34:20.3952223Z           "complete": false,
2026-06-22T01:34:20.3952313Z           "evidence": []
2026-06-22T01:34:20.3952385Z         },
2026-06-22T01:34:20.3952466Z         "impl": {
2026-06-22T01:34:20.3952561Z           "complete": true,
2026-06-22T01:34:20.3952647Z           "evidence": [
2026-06-22T01:34:20.3952729Z             {
2026-06-22T01:34:20.3952858Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3952957Z               "line": 183
2026-06-22T01:34:20.3953034Z             },
2026-06-22T01:34:20.3953119Z             {
2026-06-22T01:34:20.3953247Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.3953334Z               "line": 296
2026-06-22T01:34:20.3953425Z             }
2026-06-22T01:34:20.3953506Z           ]
2026-06-22T01:34:20.3953601Z         },
2026-06-22T01:34:20.3953678Z         "int": {
2026-06-22T01:34:20.3953768Z           "complete": false,
2026-06-22T01:34:20.3953854Z           "evidence": []
2026-06-22T01:34:20.3953939Z         },
2026-06-22T01:34:20.3954031Z         "unit": {
2026-06-22T01:34:20.3954115Z           "complete": true,
2026-06-22T01:34:20.3954201Z           "evidence": [
2026-06-22T01:34:20.3954284Z             {
2026-06-22T01:34:20.3954416Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.3954506Z               "line": 655
2026-06-22T01:34:20.3954591Z             }
2026-06-22T01:34:20.3954677Z           ]
2026-06-22T01:34:20.3954761Z         }
2026-06-22T01:34:20.3954851Z       }
2026-06-22T01:34:20.3954937Z     },
2026-06-22T01:34:20.3955033Z     {
2026-06-22T01:34:20.3955128Z       "id": "REQ-PICKER-3",
2026-06-22T01:34:20.3957547Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-22T01:34:20.3957657Z       "requiredStages": [
2026-06-22T01:34:20.3957742Z         "impl",
2026-06-22T01:34:20.3957823Z         "unit"
2026-06-22T01:34:20.3957905Z       ],
2026-06-22T01:34:20.3957991Z       "stages": {
2026-06-22T01:34:20.3958080Z         "doc": {
2026-06-22T01:34:20.3958177Z           "complete": false,
2026-06-22T01:34:20.3958258Z           "evidence": []
2026-06-22T01:34:20.3958343Z         },
2026-06-22T01:34:20.3958429Z         "impl": {
2026-06-22T01:34:20.3958525Z           "complete": true,
2026-06-22T01:34:20.3958610Z           "evidence": [
2026-06-22T01:34:20.3958691Z             {
2026-06-22T01:34:20.3958802Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.3958882Z               "line": 124
2026-06-22T01:34:20.3959025Z             }
2026-06-22T01:34:20.3959107Z           ]
2026-06-22T01:34:20.3959197Z         },
2026-06-22T01:34:20.3959273Z         "int": {
2026-06-22T01:34:20.3959368Z           "complete": false,
2026-06-22T01:34:20.3959578Z           "evidence": []
2026-06-22T01:34:20.3959650Z         },
2026-06-22T01:34:20.3959822Z         "unit": {
2026-06-22T01:34:20.3959911Z           "complete": true,
2026-06-22T01:34:20.3960001Z           "evidence": [
2026-06-22T01:34:20.3960073Z             {
2026-06-22T01:34:20.3960184Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.3963231Z               "line": 369
2026-06-22T01:34:20.3963337Z             }
2026-06-22T01:34:20.3963422Z           ]
2026-06-22T01:34:20.3963512Z         }
2026-06-22T01:34:20.3963637Z       }
2026-06-22T01:34:20.3963717Z     },
2026-06-22T01:34:20.3963846Z     {
2026-06-22T01:34:20.3963942Z       "id": "REQ-PICKER-4",
2026-06-22T01:34:20.3965908Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-22T01:34:20.3966045Z       "requiredStages": [
2026-06-22T01:34:20.3966137Z         "impl",
2026-06-22T01:34:20.3966218Z         "unit"
2026-06-22T01:34:20.3966308Z       ],
2026-06-22T01:34:20.3966393Z       "stages": {
2026-06-22T01:34:20.3966480Z         "doc": {
2026-06-22T01:34:20.3966579Z           "complete": false,
2026-06-22T01:34:20.3966670Z           "evidence": []
2026-06-22T01:34:20.3966751Z         },
2026-06-22T01:34:20.3966839Z         "impl": {
2026-06-22T01:34:20.3966928Z           "complete": true,
2026-06-22T01:34:20.3967013Z           "evidence": [
2026-06-22T01:34:20.3967086Z             {
2026-06-22T01:34:20.3967237Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3967333Z               "line": 353
2026-06-22T01:34:20.3967415Z             },
2026-06-22T01:34:20.3967492Z             {
2026-06-22T01:34:20.3967609Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.3967699Z               "line": 105
2026-06-22T01:34:20.3967771Z             }
2026-06-22T01:34:20.3967855Z           ]
2026-06-22T01:34:20.3967931Z         },
2026-06-22T01:34:20.3968020Z         "int": {
2026-06-22T01:34:20.3968107Z           "complete": false,
2026-06-22T01:34:20.3968198Z           "evidence": []
2026-06-22T01:34:20.3968278Z         },
2026-06-22T01:34:20.3968355Z         "unit": {
2026-06-22T01:34:20.3968451Z           "complete": true,
2026-06-22T01:34:20.3968541Z           "evidence": [
2026-06-22T01:34:20.3968622Z             {
2026-06-22T01:34:20.3968742Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.3968837Z               "line": 1246
2026-06-22T01:34:20.3968922Z             },
2026-06-22T01:34:20.3969080Z             {
2026-06-22T01:34:20.3969199Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.3969289Z               "line": 427
2026-06-22T01:34:20.3969377Z             }
2026-06-22T01:34:20.3969461Z           ]
2026-06-22T01:34:20.3969542Z         }
2026-06-22T01:34:20.3969623Z       }
2026-06-22T01:34:20.3969696Z     },
2026-06-22T01:34:20.3969766Z     {
2026-06-22T01:34:20.3969862Z       "id": "REQ-PICKER-5",
2026-06-22T01:34:20.3972911Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-22T01:34:20.3973268Z       "requiredStages": [
2026-06-22T01:34:20.3973348Z         "impl",
2026-06-22T01:34:20.3973433Z         "unit"
2026-06-22T01:34:20.3973505Z       ],
2026-06-22T01:34:20.3973596Z       "stages": {
2026-06-22T01:34:20.3973682Z         "doc": {
2026-06-22T01:34:20.3973772Z           "complete": false,
2026-06-22T01:34:20.3973863Z           "evidence": []
2026-06-22T01:34:20.3973944Z         },
2026-06-22T01:34:20.3974043Z         "impl": {
2026-06-22T01:34:20.3974130Z           "complete": true,
2026-06-22T01:34:20.3974240Z           "evidence": [
2026-06-22T01:34:20.3974311Z             {
2026-06-22T01:34:20.3974421Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3974512Z               "line": 1802
2026-06-22T01:34:20.3974592Z             }
2026-06-22T01:34:20.3974669Z           ]
2026-06-22T01:34:20.3974745Z         },
2026-06-22T01:34:20.3974832Z         "int": {
2026-06-22T01:34:20.3974921Z           "complete": false,
2026-06-22T01:34:20.3975016Z           "evidence": []
2026-06-22T01:34:20.3975104Z         },
2026-06-22T01:34:20.3975175Z         "unit": {
2026-06-22T01:34:20.3975269Z           "complete": true,
2026-06-22T01:34:20.3975355Z           "evidence": [
2026-06-22T01:34:20.3975442Z             {
2026-06-22T01:34:20.3975546Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.3975635Z               "line": 7526
2026-06-22T01:34:20.3975716Z             }
2026-06-22T01:34:20.3975797Z           ]
2026-06-22T01:34:20.3975882Z         }
2026-06-22T01:34:20.3975962Z       }
2026-06-22T01:34:20.3976048Z     },
2026-06-22T01:34:20.3976130Z     {
2026-06-22T01:34:20.3976257Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-22T01:34:20.3977641Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-22T01:34:20.3977742Z       "requiredStages": [],
2026-06-22T01:34:20.3977821Z       "stages": {
2026-06-22T01:34:20.3977903Z         "doc": {
2026-06-22T01:34:20.3977990Z           "complete": false,
2026-06-22T01:34:20.3978071Z           "evidence": []
2026-06-22T01:34:20.3978164Z         },
2026-06-22T01:34:20.3978254Z         "impl": {
2026-06-22T01:34:20.3978350Z           "complete": false,
2026-06-22T01:34:20.3978444Z           "evidence": []
2026-06-22T01:34:20.3978519Z         },
2026-06-22T01:34:20.3978610Z         "int": {
2026-06-22T01:34:20.3978701Z           "complete": false,
2026-06-22T01:34:20.3978791Z           "evidence": []
2026-06-22T01:34:20.3978872Z         },
2026-06-22T01:34:20.3979025Z         "unit": {
2026-06-22T01:34:20.3979115Z           "complete": false,
2026-06-22T01:34:20.3979196Z           "evidence": []
2026-06-22T01:34:20.3979278Z         }
2026-06-22T01:34:20.3979363Z       }
2026-06-22T01:34:20.3979444Z     },
2026-06-22T01:34:20.3979530Z     {
2026-06-22T01:34:20.3979636Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-22T01:34:20.3980727Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-22T01:34:20.3981026Z       "requiredStages": [
2026-06-22T01:34:20.3981107Z         "impl",
2026-06-22T01:34:20.3981188Z         "unit"
2026-06-22T01:34:20.3981266Z       ],
2026-06-22T01:34:20.3981351Z       "stages": {
2026-06-22T01:34:20.3981427Z         "doc": {
2026-06-22T01:34:20.3981523Z           "complete": false,
2026-06-22T01:34:20.3981604Z           "evidence": []
2026-06-22T01:34:20.3981684Z         },
2026-06-22T01:34:20.3981769Z         "impl": {
2026-06-22T01:34:20.3981857Z           "complete": true,
2026-06-22T01:34:20.3981947Z           "evidence": [
2026-06-22T01:34:20.3982027Z             {
2026-06-22T01:34:20.3982142Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.3982233Z               "line": 275
2026-06-22T01:34:20.3982304Z             }
2026-06-22T01:34:20.3982404Z           ]
2026-06-22T01:34:20.3982482Z         },
2026-06-22T01:34:20.3982567Z         "int": {
2026-06-22T01:34:20.3982662Z           "complete": false,
2026-06-22T01:34:20.3982758Z           "evidence": []
2026-06-22T01:34:20.3982844Z         },
2026-06-22T01:34:20.3982919Z         "unit": {
2026-06-22T01:34:20.3983005Z           "complete": true,
2026-06-22T01:34:20.3983092Z           "evidence": [
2026-06-22T01:34:20.3983168Z             {
2026-06-22T01:34:20.3983282Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.3983371Z               "line": 400
2026-06-22T01:34:20.3983453Z             }
2026-06-22T01:34:20.3983537Z           ]
2026-06-22T01:34:20.3983617Z         }
2026-06-22T01:34:20.3983698Z       }
2026-06-22T01:34:20.3983770Z     },
2026-06-22T01:34:20.3983847Z     {
2026-06-22T01:34:20.3983942Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-22T01:34:20.3985491Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-22T01:34:20.3985600Z       "requiredStages": [
2026-06-22T01:34:20.3985688Z         "impl",
2026-06-22T01:34:20.3985773Z         "unit"
2026-06-22T01:34:20.3985858Z       ],
2026-06-22T01:34:20.3985954Z       "stages": {
2026-06-22T01:34:20.3986031Z         "doc": {
2026-06-22T01:34:20.3986134Z           "complete": false,
2026-06-22T01:34:20.3986219Z           "evidence": []
2026-06-22T01:34:20.3986296Z         },
2026-06-22T01:34:20.3986391Z         "impl": {
2026-06-22T01:34:20.3986475Z           "complete": true,
2026-06-22T01:34:20.3986584Z           "evidence": [
2026-06-22T01:34:20.3986665Z             {
2026-06-22T01:34:20.3986790Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.3986884Z               "line": 654
2026-06-22T01:34:20.3986971Z             }
2026-06-22T01:34:20.3987056Z           ]
2026-06-22T01:34:20.3987137Z         },
2026-06-22T01:34:20.3987223Z         "int": {
2026-06-22T01:34:20.3987305Z           "complete": false,
2026-06-22T01:34:20.3987400Z           "evidence": []
2026-06-22T01:34:20.3987471Z         },
2026-06-22T01:34:20.3987557Z         "unit": {
2026-06-22T01:34:20.3987648Z           "complete": true,
2026-06-22T01:34:20.3987733Z           "evidence": [
2026-06-22T01:34:20.3987824Z             {
2026-06-22T01:34:20.3987935Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.3988024Z               "line": 1078
2026-06-22T01:34:20.3988101Z             },
2026-06-22T01:34:20.3988187Z             {
2026-06-22T01:34:20.3988297Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.3988458Z               "line": 1092
2026-06-22T01:34:20.3988546Z             }
2026-06-22T01:34:20.3988687Z           ]
2026-06-22T01:34:20.3988767Z         }
2026-06-22T01:34:20.3988843Z       }
2026-06-22T01:34:20.3988920Z     },
2026-06-22T01:34:20.3989084Z     {
2026-06-22T01:34:20.3989175Z       "id": "REQ-PICKER-UX-V013",
2026-06-22T01:34:20.3990768Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-22T01:34:20.3990864Z       "requiredStages": [],
2026-06-22T01:34:20.3990958Z       "stages": {
2026-06-22T01:34:20.3991039Z         "doc": {
2026-06-22T01:34:20.3991126Z           "complete": false,
2026-06-22T01:34:20.3991216Z           "evidence": []
2026-06-22T01:34:20.3991297Z         },
2026-06-22T01:34:20.3991378Z         "impl": {
2026-06-22T01:34:20.3991470Z           "complete": false,
2026-06-22T01:34:20.3991559Z           "evidence": []
2026-06-22T01:34:20.3991649Z         },
2026-06-22T01:34:20.3991735Z         "int": {
2026-06-22T01:34:20.3991835Z           "complete": false,
2026-06-22T01:34:20.3991920Z           "evidence": []
2026-06-22T01:34:20.3992001Z         },
2026-06-22T01:34:20.3992087Z         "unit": {
2026-06-22T01:34:20.3992183Z           "complete": false,
2026-06-22T01:34:20.3992258Z           "evidence": []
2026-06-22T01:34:20.3992344Z         }
2026-06-22T01:34:20.3992427Z       }
2026-06-22T01:34:20.3992507Z     },
2026-06-22T01:34:20.3992592Z     {
2026-06-22T01:34:20.3992679Z       "id": "REQ-PRES-1",
2026-06-22T01:34:20.3994003Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-22T01:34:20.3994097Z       "requiredStages": [
2026-06-22T01:34:20.3994182Z         "impl",
2026-06-22T01:34:20.3994267Z         "unit",
2026-06-22T01:34:20.3994358Z         "int"
2026-06-22T01:34:20.3994421Z       ],
2026-06-22T01:34:20.3994506Z       "stages": {
2026-06-22T01:34:20.3994592Z         "doc": {
2026-06-22T01:34:20.3994688Z           "complete": true,
2026-06-22T01:34:20.3994769Z           "evidence": [
2026-06-22T01:34:20.3994859Z             {
2026-06-22T01:34:20.3994950Z               "path": "docs/DEFERRED.md",
2026-06-22T01:34:20.3995045Z               "line": 11
2026-06-22T01:34:20.3995135Z             }
2026-06-22T01:34:20.3995201Z           ]
2026-06-22T01:34:20.3995299Z         },
2026-06-22T01:34:20.3995384Z         "impl": {
2026-06-22T01:34:20.3995469Z           "complete": true,
2026-06-22T01:34:20.3995550Z           "evidence": [
2026-06-22T01:34:20.3995637Z             {
2026-06-22T01:34:20.3995765Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3995850Z               "line": 515
2026-06-22T01:34:20.3995938Z             },
2026-06-22T01:34:20.3996022Z             {
2026-06-22T01:34:20.3996146Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.3996229Z               "line": 567
2026-06-22T01:34:20.3996314Z             },
2026-06-22T01:34:20.3996394Z             {
2026-06-22T01:34:20.3996510Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3996605Z               "line": 188
2026-06-22T01:34:20.3996685Z             },
2026-06-22T01:34:20.3996894Z             {
2026-06-22T01:34:20.3997011Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.3997183Z               "line": 214
2026-06-22T01:34:20.3997274Z             },
2026-06-22T01:34:20.3997354Z             {
2026-06-22T01:34:20.3997483Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:34:20.3997560Z               "line": 28
2026-06-22T01:34:20.3997646Z             },
2026-06-22T01:34:20.3997735Z             {
2026-06-22T01:34:20.3997851Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:34:20.3997941Z               "line": 105
2026-06-22T01:34:20.3998022Z             },
2026-06-22T01:34:20.3998108Z             {
2026-06-22T01:34:20.3998223Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:34:20.3998313Z               "line": 161
2026-06-22T01:34:20.3998403Z             },
2026-06-22T01:34:20.3998481Z             {
2026-06-22T01:34:20.3998594Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:34:20.3998680Z               "line": 180
2026-06-22T01:34:20.3998761Z             },
2026-06-22T01:34:20.3998848Z             {
2026-06-22T01:34:20.3999047Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.3999134Z               "line": 421
2026-06-22T01:34:20.3999210Z             },
2026-06-22T01:34:20.3999294Z             {
2026-06-22T01:34:20.3999413Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.3999504Z               "line": 289
2026-06-22T01:34:20.3999583Z             },
2026-06-22T01:34:20.3999668Z             {
2026-06-22T01:34:20.3999787Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.3999865Z               "line": 336
2026-06-22T01:34:20.3999949Z             },
2026-06-22T01:34:20.4000035Z             {
2026-06-22T01:34:20.4000150Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4000236Z               "line": 362
2026-06-22T01:34:20.4000316Z             },
2026-06-22T01:34:20.4000408Z             {
2026-06-22T01:34:20.4000522Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4000616Z               "line": 100
2026-06-22T01:34:20.4000699Z             }
2026-06-22T01:34:20.4000775Z           ]
2026-06-22T01:34:20.4000855Z         },
2026-06-22T01:34:20.4000941Z         "int": {
2026-06-22T01:34:20.4001033Z           "complete": true,
2026-06-22T01:34:20.4001118Z           "evidence": [
2026-06-22T01:34:20.4001204Z             {
2026-06-22T01:34:20.4001323Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.4001405Z               "line": 563
2026-06-22T01:34:20.4001484Z             },
2026-06-22T01:34:20.4001565Z             {
2026-06-22T01:34:20.4001677Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4001753Z               "line": 747
2026-06-22T01:34:20.4001837Z             },
2026-06-22T01:34:20.4001919Z             {
2026-06-22T01:34:20.4002035Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4002133Z               "line": 1165
2026-06-22T01:34:20.4002218Z             }
2026-06-22T01:34:20.4002304Z           ]
2026-06-22T01:34:20.4002386Z         },
2026-06-22T01:34:20.4002476Z         "unit": {
2026-06-22T01:34:20.4002561Z           "complete": true,
2026-06-22T01:34:20.4002643Z           "evidence": [
2026-06-22T01:34:20.4002729Z             {
2026-06-22T01:34:20.4002838Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.4002924Z               "line": 674
2026-06-22T01:34:20.4003006Z             },
2026-06-22T01:34:20.4003092Z             {
2026-06-22T01:34:20.4003200Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:34:20.4003287Z               "line": 238
2026-06-22T01:34:20.4003367Z             },
2026-06-22T01:34:20.4003453Z             {
2026-06-22T01:34:20.4003578Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:34:20.4003654Z               "line": 269
2026-06-22T01:34:20.4003844Z             },
2026-06-22T01:34:20.4003936Z             {
2026-06-22T01:34:20.4004053Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:34:20.4004236Z               "line": 305
2026-06-22T01:34:20.4004317Z             },
2026-06-22T01:34:20.4004402Z             {
2026-06-22T01:34:20.4004510Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:34:20.4004592Z               "line": 336
2026-06-22T01:34:20.4004671Z             },
2026-06-22T01:34:20.4004747Z             {
2026-06-22T01:34:20.4004880Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4004967Z               "line": 1217
2026-06-22T01:34:20.4005052Z             },
2026-06-22T01:34:20.4005127Z             {
2026-06-22T01:34:20.4005243Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4005329Z               "line": 1163
2026-06-22T01:34:20.4005409Z             }
2026-06-22T01:34:20.4005496Z           ]
2026-06-22T01:34:20.4005577Z         }
2026-06-22T01:34:20.4005662Z       }
2026-06-22T01:34:20.4005748Z     },
2026-06-22T01:34:20.4005840Z     {
2026-06-22T01:34:20.4005930Z       "id": "REQ-RC-1",
2026-06-22T01:34:20.4007934Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-22T01:34:20.4008033Z       "requiredStages": [
2026-06-22T01:34:20.4008115Z         "impl",
2026-06-22T01:34:20.4008225Z         "unit",
2026-06-22T01:34:20.4008309Z         "int"
2026-06-22T01:34:20.4008392Z       ],
2026-06-22T01:34:20.4008492Z       "stages": {
2026-06-22T01:34:20.4008572Z         "doc": {
2026-06-22T01:34:20.4008668Z           "complete": false,
2026-06-22T01:34:20.4008749Z           "evidence": []
2026-06-22T01:34:20.4008835Z         },
2026-06-22T01:34:20.4008916Z         "impl": {
2026-06-22T01:34:20.4009083Z           "complete": true,
2026-06-22T01:34:20.4009173Z           "evidence": [
2026-06-22T01:34:20.4009259Z             {
2026-06-22T01:34:20.4009375Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.4009460Z               "line": 1038
2026-06-22T01:34:20.4009550Z             },
2026-06-22T01:34:20.4009632Z             {
2026-06-22T01:34:20.4009756Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4009845Z               "line": 2211
2026-06-22T01:34:20.4009920Z             },
2026-06-22T01:34:20.4010002Z             {
2026-06-22T01:34:20.4010115Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4010204Z               "line": 1017
2026-06-22T01:34:20.4010295Z             },
2026-06-22T01:34:20.4010377Z             {
2026-06-22T01:34:20.4010496Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4010581Z               "line": 1051
2026-06-22T01:34:20.4010658Z             },
2026-06-22T01:34:20.4010743Z             {
2026-06-22T01:34:20.4010848Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4010944Z               "line": 22
2026-06-22T01:34:20.4011025Z             },
2026-06-22T01:34:20.4011116Z             {
2026-06-22T01:34:20.4011210Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4011297Z               "line": 701
2026-06-22T01:34:20.4011383Z             }
2026-06-22T01:34:20.4011468Z           ]
2026-06-22T01:34:20.4011549Z         },
2026-06-22T01:34:20.4011636Z         "int": {
2026-06-22T01:34:20.4011735Z           "complete": true,
2026-06-22T01:34:20.4011913Z           "evidence": [
2026-06-22T01:34:20.4012003Z             {
2026-06-22T01:34:20.4012218Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.4012294Z               "line": 261
2026-06-22T01:34:20.4012378Z             },
2026-06-22T01:34:20.4012460Z             {
2026-06-22T01:34:20.4012580Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.4012665Z               "line": 288
2026-06-22T01:34:20.4012745Z             },
2026-06-22T01:34:20.4012830Z             {
2026-06-22T01:34:20.4012941Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.4013031Z               "line": 416
2026-06-22T01:34:20.4013112Z             }
2026-06-22T01:34:20.4013198Z           ]
2026-06-22T01:34:20.4013279Z         },
2026-06-22T01:34:20.4013356Z         "unit": {
2026-06-22T01:34:20.4013450Z           "complete": true,
2026-06-22T01:34:20.4013537Z           "evidence": [
2026-06-22T01:34:20.4013622Z             {
2026-06-22T01:34:20.4013751Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4013837Z               "line": 1415
2026-06-22T01:34:20.4013928Z             },
2026-06-22T01:34:20.4014009Z             {
2026-06-22T01:34:20.4014118Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4014205Z               "line": 1133
2026-06-22T01:34:20.4014294Z             },
2026-06-22T01:34:20.4014371Z             {
2026-06-22T01:34:20.4014463Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4014548Z               "line": 1162
2026-06-22T01:34:20.4014637Z             },
2026-06-22T01:34:20.4014724Z             {
2026-06-22T01:34:20.4014825Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4014910Z               "line": 1175
2026-06-22T01:34:20.4014985Z             }
2026-06-22T01:34:20.4015070Z           ]
2026-06-22T01:34:20.4015142Z         }
2026-06-22T01:34:20.4015227Z       }
2026-06-22T01:34:20.4015312Z     },
2026-06-22T01:34:20.4015392Z     {
2026-06-22T01:34:20.4015498Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-22T01:34:20.4021356Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-22T01:34:20.4021633Z       "requiredStages": [
2026-06-22T01:34:20.4021709Z         "doc",
2026-06-22T01:34:20.4021914Z         "impl",
2026-06-22T01:34:20.4022000Z         "unit"
2026-06-22T01:34:20.4022085Z       ],
2026-06-22T01:34:20.4022172Z       "stages": {
2026-06-22T01:34:20.4022258Z         "doc": {
2026-06-22T01:34:20.4022339Z           "complete": true,
2026-06-22T01:34:20.4022429Z           "evidence": [
2026-06-22T01:34:20.4022511Z             {
2026-06-22T01:34:20.4022615Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4022696Z               "line": 345
2026-06-22T01:34:20.4022778Z             },
2026-06-22T01:34:20.4022864Z             {
2026-06-22T01:34:20.4022962Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.4023049Z               "line": 440
2026-06-22T01:34:20.4023126Z             }
2026-06-22T01:34:20.4023216Z           ]
2026-06-22T01:34:20.4023305Z         },
2026-06-22T01:34:20.4023386Z         "impl": {
2026-06-22T01:34:20.4023492Z           "complete": true,
2026-06-22T01:34:20.4023573Z           "evidence": [
2026-06-22T01:34:20.4023657Z             {
2026-06-22T01:34:20.4023768Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4023854Z               "line": 226
2026-06-22T01:34:20.4023939Z             },
2026-06-22T01:34:20.4024020Z             {
2026-06-22T01:34:20.4024121Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4024197Z               "line": 285
2026-06-22T01:34:20.4024287Z             },
2026-06-22T01:34:20.4024368Z             {
2026-06-22T01:34:20.4024464Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4024555Z               "line": 300
2026-06-22T01:34:20.4024635Z             },
2026-06-22T01:34:20.4024722Z             {
2026-06-22T01:34:20.4024817Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4024903Z               "line": 315
2026-06-22T01:34:20.4024984Z             },
2026-06-22T01:34:20.4025070Z             {
2026-06-22T01:34:20.4025174Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4025264Z               "line": 364
2026-06-22T01:34:20.4025357Z             }
2026-06-22T01:34:20.4025437Z           ]
2026-06-22T01:34:20.4025526Z         },
2026-06-22T01:34:20.4025611Z         "int": {
2026-06-22T01:34:20.4025702Z           "complete": false,
2026-06-22T01:34:20.4025792Z           "evidence": []
2026-06-22T01:34:20.4025877Z         },
2026-06-22T01:34:20.4025967Z         "unit": {
2026-06-22T01:34:20.4026054Z           "complete": true,
2026-06-22T01:34:20.4026149Z           "evidence": [
2026-06-22T01:34:20.4026229Z             {
2026-06-22T01:34:20.4026325Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4026416Z               "line": 1190
2026-06-22T01:34:20.4026491Z             },
2026-06-22T01:34:20.4026572Z             {
2026-06-22T01:34:20.4026674Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4026774Z               "line": 1305
2026-06-22T01:34:20.4026854Z             }
2026-06-22T01:34:20.4026950Z           ]
2026-06-22T01:34:20.4027036Z         }
2026-06-22T01:34:20.4027117Z       }
2026-06-22T01:34:20.4027207Z     },
2026-06-22T01:34:20.4027284Z     {
2026-06-22T01:34:20.4027388Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-22T01:34:20.4031774Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-22T01:34:20.4032103Z       "requiredStages": [
2026-06-22T01:34:20.4032184Z         "doc",
2026-06-22T01:34:20.4032264Z         "impl",
2026-06-22T01:34:20.4032345Z         "unit"
2026-06-22T01:34:20.4032432Z       ],
2026-06-22T01:34:20.4032536Z       "stages": {
2026-06-22T01:34:20.4032617Z         "doc": {
2026-06-22T01:34:20.4032718Z           "complete": true,
2026-06-22T01:34:20.4032803Z           "evidence": [
2026-06-22T01:34:20.4032889Z             {
2026-06-22T01:34:20.4033004Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.4033090Z               "line": 461
2026-06-22T01:34:20.4033179Z             }
2026-06-22T01:34:20.4033261Z           ]
2026-06-22T01:34:20.4033348Z         },
2026-06-22T01:34:20.4033433Z         "impl": {
2026-06-22T01:34:20.4033518Z           "complete": true,
2026-06-22T01:34:20.4033604Z           "evidence": [
2026-06-22T01:34:20.4033682Z             {
2026-06-22T01:34:20.4033785Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4033870Z               "line": 421
2026-06-22T01:34:20.4033946Z             },
2026-06-22T01:34:20.4034027Z             {
2026-06-22T01:34:20.4034133Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4034217Z               "line": 437
2026-06-22T01:34:20.4034299Z             }
2026-06-22T01:34:20.4034372Z           ]
2026-06-22T01:34:20.4034448Z         },
2026-06-22T01:34:20.4034542Z         "int": {
2026-06-22T01:34:20.4034629Z           "complete": false,
2026-06-22T01:34:20.4034724Z           "evidence": []
2026-06-22T01:34:20.4034810Z         },
2026-06-22T01:34:20.4034890Z         "unit": {
2026-06-22T01:34:20.4034972Z           "complete": true,
2026-06-22T01:34:20.4035063Z           "evidence": [
2026-06-22T01:34:20.4035143Z             {
2026-06-22T01:34:20.4035243Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4035344Z               "line": 1440
2026-06-22T01:34:20.4035415Z             },
2026-06-22T01:34:20.4035496Z             {
2026-06-22T01:34:20.4035602Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4035688Z               "line": 1459
2026-06-22T01:34:20.4035772Z             },
2026-06-22T01:34:20.4035854Z             {
2026-06-22T01:34:20.4035955Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4036044Z               "line": 1471
2026-06-22T01:34:20.4036129Z             },
2026-06-22T01:34:20.4036220Z             {
2026-06-22T01:34:20.4036320Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4036413Z               "line": 1499
2026-06-22T01:34:20.4036494Z             }
2026-06-22T01:34:20.4036575Z           ]
2026-06-22T01:34:20.4036662Z         }
2026-06-22T01:34:20.4036746Z       }
2026-06-22T01:34:20.4036823Z     },
2026-06-22T01:34:20.4036909Z     {
2026-06-22T01:34:20.4037014Z       "id": "REQ-RC-WIN-PASTE",
2026-06-22T01:34:20.4041753Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-22T01:34:20.4042091Z       "requiredStages": [
2026-06-22T01:34:20.4042171Z         "doc",
2026-06-22T01:34:20.4042251Z         "impl",
2026-06-22T01:34:20.4042334Z         "unit"
2026-06-22T01:34:20.4042419Z       ],
2026-06-22T01:34:20.4042509Z       "stages": {
2026-06-22T01:34:20.4042595Z         "doc": {
2026-06-22T01:34:20.4042696Z           "complete": true,
2026-06-22T01:34:20.4042786Z           "evidence": [
2026-06-22T01:34:20.4042867Z             {
2026-06-22T01:34:20.4042983Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:34:20.4043058Z               "line": 447
2026-06-22T01:34:20.4043144Z             }
2026-06-22T01:34:20.4043225Z           ]
2026-06-22T01:34:20.4043312Z         },
2026-06-22T01:34:20.4043396Z         "impl": {
2026-06-22T01:34:20.4043487Z           "complete": true,
2026-06-22T01:34:20.4043583Z           "evidence": [
2026-06-22T01:34:20.4043659Z             {
2026-06-22T01:34:20.4043768Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4043854Z               "line": 395
2026-06-22T01:34:20.4043937Z             },
2026-06-22T01:34:20.4044021Z             {
2026-06-22T01:34:20.4044121Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4044213Z               "line": 411
2026-06-22T01:34:20.4044289Z             },
2026-06-22T01:34:20.4044364Z             {
2026-06-22T01:34:20.4044458Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4044549Z               "line": 454
2026-06-22T01:34:20.4044636Z             },
2026-06-22T01:34:20.4044721Z             {
2026-06-22T01:34:20.4044821Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4044903Z               "line": 468
2026-06-22T01:34:20.4044984Z             },
2026-06-22T01:34:20.4045064Z             {
2026-06-22T01:34:20.4045174Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4045265Z               "line": 479
2026-06-22T01:34:20.4045351Z             }
2026-06-22T01:34:20.4045440Z           ]
2026-06-22T01:34:20.4045528Z         },
2026-06-22T01:34:20.4045613Z         "int": {
2026-06-22T01:34:20.4045699Z           "complete": false,
2026-06-22T01:34:20.4045794Z           "evidence": []
2026-06-22T01:34:20.4045881Z         },
2026-06-22T01:34:20.4045961Z         "unit": {
2026-06-22T01:34:20.4046056Z           "complete": true,
2026-06-22T01:34:20.4046143Z           "evidence": [
2026-06-22T01:34:20.4046228Z             {
2026-06-22T01:34:20.4046327Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4046419Z               "line": 1381
2026-06-22T01:34:20.4046505Z             },
2026-06-22T01:34:20.4046590Z             {
2026-06-22T01:34:20.4046689Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4046775Z               "line": 1402
2026-06-22T01:34:20.4046851Z             },
2026-06-22T01:34:20.4046931Z             {
2026-06-22T01:34:20.4047116Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4047212Z               "line": 1423
2026-06-22T01:34:20.4047364Z             }
2026-06-22T01:34:20.4047450Z           ]
2026-06-22T01:34:20.4047531Z         }
2026-06-22T01:34:20.4047622Z       }
2026-06-22T01:34:20.4047707Z     },
2026-06-22T01:34:20.4047794Z     {
2026-06-22T01:34:20.4047889Z       "id": "REQ-RCVIEW-1",
2026-06-22T01:34:20.4052351Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-22T01:34:20.4052483Z       "requiredStages": [
2026-06-22T01:34:20.4052588Z         "doc",
2026-06-22T01:34:20.4052680Z         "impl",
2026-06-22T01:34:20.4052759Z         "unit",
2026-06-22T01:34:20.4052855Z         "int"
2026-06-22T01:34:20.4052932Z       ],
2026-06-22T01:34:20.4053018Z       "stages": {
2026-06-22T01:34:20.4053103Z         "doc": {
2026-06-22T01:34:20.4053184Z           "complete": true,
2026-06-22T01:34:20.4053275Z           "evidence": [
2026-06-22T01:34:20.4053356Z             {
2026-06-22T01:34:20.4053465Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4053552Z               "line": 342
2026-06-22T01:34:20.4053637Z             }
2026-06-22T01:34:20.4053722Z           ]
2026-06-22T01:34:20.4053804Z         },
2026-06-22T01:34:20.4053891Z         "impl": {
2026-06-22T01:34:20.4053976Z           "complete": true,
2026-06-22T01:34:20.4054066Z           "evidence": [
2026-06-22T01:34:20.4054153Z             {
2026-06-22T01:34:20.4054266Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.4054362Z               "line": 549
2026-06-22T01:34:20.4054449Z             },
2026-06-22T01:34:20.4054535Z             {
2026-06-22T01:34:20.4054648Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4054739Z               "line": 722
2026-06-22T01:34:20.4054821Z             },
2026-06-22T01:34:20.4054901Z             {
2026-06-22T01:34:20.4055023Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4055104Z               "line": 733
2026-06-22T01:34:20.4055196Z             },
2026-06-22T01:34:20.4055281Z             {
2026-06-22T01:34:20.4055395Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:34:20.4055477Z               "line": 41
2026-06-22T01:34:20.4055558Z             },
2026-06-22T01:34:20.4059516Z             {
2026-06-22T01:34:20.4059680Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:34:20.4059769Z               "line": 62
2026-06-22T01:34:20.4059851Z             },
2026-06-22T01:34:20.4059938Z             {
2026-06-22T01:34:20.4060246Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.4060330Z               "line": 309
2026-06-22T01:34:20.4060505Z             },
2026-06-22T01:34:20.4060586Z             {
2026-06-22T01:34:20.4060692Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:34:20.4060776Z               "line": 701
2026-06-22T01:34:20.4060853Z             }
2026-06-22T01:34:20.4060935Z           ]
2026-06-22T01:34:20.4061016Z         },
2026-06-22T01:34:20.4061101Z         "int": {
2026-06-22T01:34:20.4061197Z           "complete": true,
2026-06-22T01:34:20.4061283Z           "evidence": [
2026-06-22T01:34:20.4061369Z             {
2026-06-22T01:34:20.4061492Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.4061579Z               "line": 916
2026-06-22T01:34:20.4061659Z             },
2026-06-22T01:34:20.4061749Z             {
2026-06-22T01:34:20.4061870Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.4061950Z               "line": 956
2026-06-22T01:34:20.4062045Z             },
2026-06-22T01:34:20.4062117Z             {
2026-06-22T01:34:20.4062237Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.4062321Z               "line": 1003
2026-06-22T01:34:20.4062413Z             },
2026-06-22T01:34:20.4062495Z             {
2026-06-22T01:34:20.4062612Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.4062703Z               "line": 1155
2026-06-22T01:34:20.4062788Z             }
2026-06-22T01:34:20.4062869Z           ]
2026-06-22T01:34:20.4062953Z         },
2026-06-22T01:34:20.4063038Z         "unit": {
2026-06-22T01:34:20.4063129Z           "complete": true,
2026-06-22T01:34:20.4063216Z           "evidence": [
2026-06-22T01:34:20.4063305Z             {
2026-06-22T01:34:20.4063430Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:34:20.4063516Z               "line": 175
2026-06-22T01:34:20.4063597Z             },
2026-06-22T01:34:20.4063682Z             {
2026-06-22T01:34:20.4063798Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:34:20.4063883Z               "line": 195
2026-06-22T01:34:20.4063973Z             }
2026-06-22T01:34:20.4064055Z           ]
2026-06-22T01:34:20.4064141Z         }
2026-06-22T01:34:20.4064221Z       }
2026-06-22T01:34:20.4064302Z     },
2026-06-22T01:34:20.4064384Z     {
2026-06-22T01:34:20.4064479Z       "id": "REQ-REACH-1",
2026-06-22T01:34:20.4064621Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-22T01:34:20.4064718Z       "requiredStages": [
2026-06-22T01:34:20.4064794Z         "impl",
2026-06-22T01:34:20.4064874Z         "unit",
2026-06-22T01:34:20.4064956Z         "int"
2026-06-22T01:34:20.4065023Z       ],
2026-06-22T01:34:20.4065114Z       "stages": {
2026-06-22T01:34:20.4065198Z         "doc": {
2026-06-22T01:34:20.4065290Z           "complete": false,
2026-06-22T01:34:20.4065376Z           "evidence": []
2026-06-22T01:34:20.4065466Z         },
2026-06-22T01:34:20.4065546Z         "impl": {
2026-06-22T01:34:20.4065646Z           "complete": true,
2026-06-22T01:34:20.4065732Z           "evidence": [
2026-06-22T01:34:20.4065818Z             {
2026-06-22T01:34:20.4065926Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4066018Z               "line": 722
2026-06-22T01:34:20.4066104Z             },
2026-06-22T01:34:20.4066189Z             {
2026-06-22T01:34:20.4066290Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:34:20.4066376Z               "line": 76
2026-06-22T01:34:20.4066462Z             },
2026-06-22T01:34:20.4066542Z             {
2026-06-22T01:34:20.4066658Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:34:20.4066743Z               "line": 222
2026-06-22T01:34:20.4066828Z             },
2026-06-22T01:34:20.4066909Z             {
2026-06-22T01:34:20.4067020Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:34:20.4067100Z               "line": 422
2026-06-22T01:34:20.4067181Z             },
2026-06-22T01:34:20.4067344Z             {
2026-06-22T01:34:20.4067453Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:34:20.4067602Z               "line": 529
2026-06-22T01:34:20.4067687Z             },
2026-06-22T01:34:20.4067772Z             {
2026-06-22T01:34:20.4067886Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:34:20.4067971Z               "line": 39
2026-06-22T01:34:20.4068056Z             },
2026-06-22T01:34:20.4068141Z             {
2026-06-22T01:34:20.4068251Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.4068337Z               "line": 301
2026-06-22T01:34:20.4068418Z             },
2026-06-22T01:34:20.4068493Z             {
2026-06-22T01:34:20.4068594Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T01:34:20.4068675Z               "line": 88
2026-06-22T01:34:20.4068761Z             },
2026-06-22T01:34:20.4068842Z             {
2026-06-22T01:34:20.4069028Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T01:34:20.4069108Z               "line": 98
2026-06-22T01:34:20.4069191Z             },
2026-06-22T01:34:20.4069281Z             {
2026-06-22T01:34:20.4069423Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4069510Z               "line": 233
2026-06-22T01:34:20.4069596Z             }
2026-06-22T01:34:20.4069681Z           ]
2026-06-22T01:34:20.4069762Z         },
2026-06-22T01:34:20.4069845Z         "int": {
2026-06-22T01:34:20.4069925Z           "complete": true,
2026-06-22T01:34:20.4070010Z           "evidence": [
2026-06-22T01:34:20.4070091Z             {
2026-06-22T01:34:20.4070211Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.4070296Z               "line": 415
2026-06-22T01:34:20.4070373Z             },
2026-06-22T01:34:20.4070454Z             {
2026-06-22T01:34:20.4070578Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.4070662Z               "line": 520
2026-06-22T01:34:20.4070738Z             },
2026-06-22T01:34:20.4070829Z             {
2026-06-22T01:34:20.4070956Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4071051Z               "line": 998
2026-06-22T01:34:20.4071137Z             },
2026-06-22T01:34:20.4071223Z             {
2026-06-22T01:34:20.4071336Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4071418Z               "line": 1383
2026-06-22T01:34:20.4071500Z             }
2026-06-22T01:34:20.4071572Z           ]
2026-06-22T01:34:20.4071656Z         },
2026-06-22T01:34:20.4071738Z         "unit": {
2026-06-22T01:34:20.4071820Z           "complete": true,
2026-06-22T01:34:20.4071905Z           "evidence": [
2026-06-22T01:34:20.4071985Z             {
2026-06-22T01:34:20.4072101Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:34:20.4072186Z               "line": 639
2026-06-22T01:34:20.4072267Z             },
2026-06-22T01:34:20.4072348Z             {
2026-06-22T01:34:20.4072449Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:34:20.4072538Z               "line": 660
2026-06-22T01:34:20.4072619Z             },
2026-06-22T01:34:20.4072712Z             {
2026-06-22T01:34:20.4072835Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:34:20.4072920Z               "line": 771
2026-06-22T01:34:20.4073007Z             },
2026-06-22T01:34:20.4073088Z             {
2026-06-22T01:34:20.4073205Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T01:34:20.4073291Z               "line": 93
2026-06-22T01:34:20.4073377Z             },
2026-06-22T01:34:20.4073462Z             {
2026-06-22T01:34:20.4073574Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T01:34:20.4073656Z               "line": 224
2026-06-22T01:34:20.4073733Z             },
2026-06-22T01:34:20.4073819Z             {
2026-06-22T01:34:20.4073932Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:34:20.4074019Z               "line": 96
2026-06-22T01:34:20.4074208Z             },
2026-06-22T01:34:20.4074290Z             {
2026-06-22T01:34:20.4074410Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:34:20.4074586Z               "line": 146
2026-06-22T01:34:20.4074668Z             },
2026-06-22T01:34:20.4074752Z             {
2026-06-22T01:34:20.4074872Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.4074954Z               "line": 698
2026-06-22T01:34:20.4075030Z             },
2026-06-22T01:34:20.4075116Z             {
2026-06-22T01:34:20.4075225Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T01:34:20.4075312Z               "line": 118
2026-06-22T01:34:20.4075391Z             },
2026-06-22T01:34:20.4075477Z             {
2026-06-22T01:34:20.4075579Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T01:34:20.4075660Z               "line": 148
2026-06-22T01:34:20.4075739Z             },
2026-06-22T01:34:20.4075821Z             {
2026-06-22T01:34:20.4075941Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4076035Z               "line": 928
2026-06-22T01:34:20.4076111Z             }
2026-06-22T01:34:20.4076201Z           ]
2026-06-22T01:34:20.4076283Z         }
2026-06-22T01:34:20.4076364Z       }
2026-06-22T01:34:20.4076444Z     },
2026-06-22T01:34:20.4076530Z     {
2026-06-22T01:34:20.4076617Z       "id": "REQ-REACH-2",
2026-06-22T01:34:20.4076768Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-22T01:34:20.4076864Z       "requiredStages": [],
2026-06-22T01:34:20.4076950Z       "stages": {
2026-06-22T01:34:20.4077036Z         "doc": {
2026-06-22T01:34:20.4077131Z           "complete": false,
2026-06-22T01:34:20.4077218Z           "evidence": []
2026-06-22T01:34:20.4077303Z         },
2026-06-22T01:34:20.4077388Z         "impl": {
2026-06-22T01:34:20.4077489Z           "complete": false,
2026-06-22T01:34:20.4077571Z           "evidence": []
2026-06-22T01:34:20.4077651Z         },
2026-06-22T01:34:20.4077736Z         "int": {
2026-06-22T01:34:20.4077838Z           "complete": false,
2026-06-22T01:34:20.4077923Z           "evidence": []
2026-06-22T01:34:20.4078013Z         },
2026-06-22T01:34:20.4078094Z         "unit": {
2026-06-22T01:34:20.4078182Z           "complete": false,
2026-06-22T01:34:20.4078275Z           "evidence": []
2026-06-22T01:34:20.4078351Z         }
2026-06-22T01:34:20.4078436Z       }
2026-06-22T01:34:20.4078513Z     },
2026-06-22T01:34:20.4078597Z     {
2026-06-22T01:34:20.4078706Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-22T01:34:20.4082230Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-22T01:34:20.4082384Z       "requiredStages": [
2026-06-22T01:34:20.4082465Z         "doc",
2026-06-22T01:34:20.4082545Z         "impl",
2026-06-22T01:34:20.4082627Z         "unit",
2026-06-22T01:34:20.4082713Z         "int"
2026-06-22T01:34:20.4082799Z       ],
2026-06-22T01:34:20.4082894Z       "stages": {
2026-06-22T01:34:20.4083099Z         "doc": {
2026-06-22T01:34:20.4083189Z           "complete": true,
2026-06-22T01:34:20.4083376Z           "evidence": [
2026-06-22T01:34:20.4083461Z             {
2026-06-22T01:34:20.4083557Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4083653Z               "line": 372
2026-06-22T01:34:20.4083728Z             }
2026-06-22T01:34:20.4083813Z           ]
2026-06-22T01:34:20.4083894Z         },
2026-06-22T01:34:20.4083980Z         "impl": {
2026-06-22T01:34:20.4084064Z           "complete": true,
2026-06-22T01:34:20.4084144Z           "evidence": [
2026-06-22T01:34:20.4084226Z             {
2026-06-22T01:34:20.4084346Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.4084430Z               "line": 110
2026-06-22T01:34:20.4084511Z             }
2026-06-22T01:34:20.4084598Z           ]
2026-06-22T01:34:20.4084679Z         },
2026-06-22T01:34:20.4084764Z         "int": {
2026-06-22T01:34:20.4084845Z           "complete": true,
2026-06-22T01:34:20.4084951Z           "evidence": [
2026-06-22T01:34:20.4085027Z             {
2026-06-22T01:34:20.4085160Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-22T01:34:20.4085256Z               "line": 26
2026-06-22T01:34:20.4085336Z             }
2026-06-22T01:34:20.4085422Z           ]
2026-06-22T01:34:20.4085504Z         },
2026-06-22T01:34:20.4085585Z         "unit": {
2026-06-22T01:34:20.4085666Z           "complete": true,
2026-06-22T01:34:20.4085751Z           "evidence": [
2026-06-22T01:34:20.4085834Z             {
2026-06-22T01:34:20.4085938Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:34:20.4086024Z               "line": 320
2026-06-22T01:34:20.4086095Z             }
2026-06-22T01:34:20.4086177Z           ]
2026-06-22T01:34:20.4086262Z         }
2026-06-22T01:34:20.4086343Z       }
2026-06-22T01:34:20.4086429Z     },
2026-06-22T01:34:20.4086511Z     {
2026-06-22T01:34:20.4086600Z       "id": "REQ-REL-1",
2026-06-22T01:34:20.4086966Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-22T01:34:20.4087061Z       "requiredStages": [
2026-06-22T01:34:20.4087143Z         "doc",
2026-06-22T01:34:20.4087219Z         "impl"
2026-06-22T01:34:20.4087309Z       ],
2026-06-22T01:34:20.4087390Z       "stages": {
2026-06-22T01:34:20.4087473Z         "doc": {
2026-06-22T01:34:20.4087563Z           "complete": true,
2026-06-22T01:34:20.4087648Z           "evidence": [
2026-06-22T01:34:20.4087729Z             {
2026-06-22T01:34:20.4087939Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-22T01:34:20.4088025Z               "line": 3
2026-06-22T01:34:20.4088097Z             }
2026-06-22T01:34:20.4088168Z           ]
2026-06-22T01:34:20.4088254Z         },
2026-06-22T01:34:20.4088344Z         "impl": {
2026-06-22T01:34:20.4088427Z           "complete": true,
2026-06-22T01:34:20.4088506Z           "evidence": [
2026-06-22T01:34:20.4088587Z             {
2026-06-22T01:34:20.4088712Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T01:34:20.4088794Z               "line": 11
2026-06-22T01:34:20.4088873Z             },
2026-06-22T01:34:20.4089034Z             {
2026-06-22T01:34:20.4089143Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4089228Z               "line": 265
2026-06-22T01:34:20.4089308Z             }
2026-06-22T01:34:20.4089381Z           ]
2026-06-22T01:34:20.4089458Z         },
2026-06-22T01:34:20.4089533Z         "int": {
2026-06-22T01:34:20.4089623Z           "complete": false,
2026-06-22T01:34:20.4089710Z           "evidence": []
2026-06-22T01:34:20.4089786Z         },
2026-06-22T01:34:20.4089862Z         "unit": {
2026-06-22T01:34:20.4089947Z           "complete": false,
2026-06-22T01:34:20.4090030Z           "evidence": []
2026-06-22T01:34:20.4090106Z         }
2026-06-22T01:34:20.4090191Z       }
2026-06-22T01:34:20.4090272Z     },
2026-06-22T01:34:20.4090354Z     {
2026-06-22T01:34:20.4090553Z       "id": "REQ-REL-2",
2026-06-22T01:34:20.4091012Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-22T01:34:20.4091202Z       "requiredStages": [
2026-06-22T01:34:20.4091284Z         "impl",
2026-06-22T01:34:20.4091364Z         "int"
2026-06-22T01:34:20.4091445Z       ],
2026-06-22T01:34:20.4091522Z       "stages": {
2026-06-22T01:34:20.4091604Z         "doc": {
2026-06-22T01:34:20.4091693Z           "complete": true,
2026-06-22T01:34:20.4091778Z           "evidence": [
2026-06-22T01:34:20.4091863Z             {
2026-06-22T01:34:20.4091969Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-22T01:34:20.4092052Z               "line": 6
2026-06-22T01:34:20.4092133Z             }
2026-06-22T01:34:20.4092214Z           ]
2026-06-22T01:34:20.4092291Z         },
2026-06-22T01:34:20.4092377Z         "impl": {
2026-06-22T01:34:20.4092467Z           "complete": true,
2026-06-22T01:34:20.4092543Z           "evidence": [
2026-06-22T01:34:20.4092625Z             {
2026-06-22T01:34:20.4092743Z               "path": ".github/workflows/release.yml",
2026-06-22T01:34:20.4092819Z               "line": 16
2026-06-22T01:34:20.4092897Z             },
2026-06-22T01:34:20.4092982Z             {
2026-06-22T01:34:20.4093091Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4093173Z               "line": 352
2026-06-22T01:34:20.4093259Z             },
2026-06-22T01:34:20.4093340Z             {
2026-06-22T01:34:20.4093444Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4093532Z               "line": 426
2026-06-22T01:34:20.4093616Z             },
2026-06-22T01:34:20.4093687Z             {
2026-06-22T01:34:20.4093798Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4093884Z               "line": 588
2026-06-22T01:34:20.4093964Z             },
2026-06-22T01:34:20.4094050Z             {
2026-06-22T01:34:20.4094147Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4094237Z               "line": 720
2026-06-22T01:34:20.4094322Z             }
2026-06-22T01:34:20.4094392Z           ]
2026-06-22T01:34:20.4094478Z         },
2026-06-22T01:34:20.4094563Z         "int": {
2026-06-22T01:34:20.4094662Z           "complete": true,
2026-06-22T01:34:20.4094738Z           "evidence": [
2026-06-22T01:34:20.4094824Z             {
2026-06-22T01:34:20.4094962Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-22T01:34:20.4095047Z               "line": 13
2026-06-22T01:34:20.4095130Z             }
2026-06-22T01:34:20.4095211Z           ]
2026-06-22T01:34:20.4095296Z         },
2026-06-22T01:34:20.4095386Z         "unit": {
2026-06-22T01:34:20.4095473Z           "complete": false,
2026-06-22T01:34:20.4095563Z           "evidence": []
2026-06-22T01:34:20.4095634Z         }
2026-06-22T01:34:20.4095720Z       }
2026-06-22T01:34:20.4095802Z     },
2026-06-22T01:34:20.4095896Z     {
2026-06-22T01:34:20.4095977Z       "id": "REQ-REL-3",
2026-06-22T01:34:20.4096404Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-22T01:34:20.4096502Z       "requiredStages": [
2026-06-22T01:34:20.4096584Z         "impl",
2026-06-22T01:34:20.4096675Z         "unit"
2026-06-22T01:34:20.4096756Z       ],
2026-06-22T01:34:20.4096845Z       "stages": {
2026-06-22T01:34:20.4096932Z         "doc": {
2026-06-22T01:34:20.4097028Z           "complete": false,
2026-06-22T01:34:20.4097109Z           "evidence": []
2026-06-22T01:34:20.4097193Z         },
2026-06-22T01:34:20.4097283Z         "impl": {
2026-06-22T01:34:20.4097369Z           "complete": true,
2026-06-22T01:34:20.4097446Z           "evidence": [
2026-06-22T01:34:20.4097531Z             {
2026-06-22T01:34:20.4097650Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4097737Z               "line": 237
2026-06-22T01:34:20.4097898Z             },
2026-06-22T01:34:20.4097980Z             {
2026-06-22T01:34:20.4098157Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4098251Z               "line": 289
2026-06-22T01:34:20.4098333Z             },
2026-06-22T01:34:20.4098423Z             {
2026-06-22T01:34:20.4098532Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4098614Z               "line": 329
2026-06-22T01:34:20.4098705Z             },
2026-06-22T01:34:20.4098785Z             {
2026-06-22T01:34:20.4098895Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4099048Z               "line": 353
2026-06-22T01:34:20.4099123Z             },
2026-06-22T01:34:20.4099205Z             {
2026-06-22T01:34:20.4099306Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4099396Z               "line": 394
2026-06-22T01:34:20.4099471Z             }
2026-06-22T01:34:20.4099551Z           ]
2026-06-22T01:34:20.4099628Z         },
2026-06-22T01:34:20.4099722Z         "int": {
2026-06-22T01:34:20.4099812Z           "complete": false,
2026-06-22T01:34:20.4099898Z           "evidence": []
2026-06-22T01:34:20.4099984Z         },
2026-06-22T01:34:20.4100065Z         "unit": {
2026-06-22T01:34:20.4100150Z           "complete": true,
2026-06-22T01:34:20.4100232Z           "evidence": [
2026-06-22T01:34:20.4100313Z             {
2026-06-22T01:34:20.4100436Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4100527Z               "line": 1045
2026-06-22T01:34:20.4100609Z             },
2026-06-22T01:34:20.4100685Z             {
2026-06-22T01:34:20.4100808Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4100890Z               "line": 1104
2026-06-22T01:34:20.4100975Z             }
2026-06-22T01:34:20.4101061Z           ]
2026-06-22T01:34:20.4101147Z         }
2026-06-22T01:34:20.4101224Z       }
2026-06-22T01:34:20.4101309Z     },
2026-06-22T01:34:20.4101390Z     {
2026-06-22T01:34:20.4101491Z       "id": "REQ-RUN-PICKER",
2026-06-22T01:34:20.4106190Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-22T01:34:20.4106334Z       "requiredStages": [
2026-06-22T01:34:20.4106419Z         "doc",
2026-06-22T01:34:20.4106500Z         "impl",
2026-06-22T01:34:20.4106576Z         "unit"
2026-06-22T01:34:20.4106663Z       ],
2026-06-22T01:34:20.4106757Z       "stages": {
2026-06-22T01:34:20.4106838Z         "doc": {
2026-06-22T01:34:20.4106929Z           "complete": true,
2026-06-22T01:34:20.4107139Z           "evidence": [
2026-06-22T01:34:20.4107225Z             {
2026-06-22T01:34:20.4107425Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4107520Z               "line": 349
2026-06-22T01:34:20.4107598Z             }
2026-06-22T01:34:20.4107678Z           ]
2026-06-22T01:34:20.4107763Z         },
2026-06-22T01:34:20.4107848Z         "impl": {
2026-06-22T01:34:20.4107939Z           "complete": true,
2026-06-22T01:34:20.4108021Z           "evidence": [
2026-06-22T01:34:20.4108101Z             {
2026-06-22T01:34:20.4108205Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4108297Z               "line": 958
2026-06-22T01:34:20.4108378Z             },
2026-06-22T01:34:20.4108458Z             {
2026-06-22T01:34:20.4108560Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4108645Z               "line": 968
2026-06-22T01:34:20.4108731Z             },
2026-06-22T01:34:20.4108811Z             {
2026-06-22T01:34:20.4108922Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.4109106Z               "line": 9
2026-06-22T01:34:20.4109189Z             },
2026-06-22T01:34:20.4109270Z             {
2026-06-22T01:34:20.4109384Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:34:20.4109474Z               "line": 67
2026-06-22T01:34:20.4109556Z             },
2026-06-22T01:34:20.4109637Z             {
2026-06-22T01:34:20.4109745Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T01:34:20.4109833Z               "line": 16
2026-06-22T01:34:20.4109909Z             },
2026-06-22T01:34:20.4109993Z             {
2026-06-22T01:34:20.4110097Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T01:34:20.4110183Z               "line": 254
2026-06-22T01:34:20.4110264Z             },
2026-06-22T01:34:20.4110358Z             {
2026-06-22T01:34:20.4110473Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4110568Z               "line": 11
2026-06-22T01:34:20.4110653Z             },
2026-06-22T01:34:20.4110744Z             {
2026-06-22T01:34:20.4110855Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4110949Z               "line": 115
2026-06-22T01:34:20.4111034Z             },
2026-06-22T01:34:20.4111116Z             {
2026-06-22T01:34:20.4111235Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4111320Z               "line": 554
2026-06-22T01:34:20.4111407Z             },
2026-06-22T01:34:20.4111489Z             {
2026-06-22T01:34:20.4111598Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4111693Z               "line": 635
2026-06-22T01:34:20.4111779Z             },
2026-06-22T01:34:20.4111869Z             {
2026-06-22T01:34:20.4111983Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4112061Z               "line": 694
2026-06-22T01:34:20.4112138Z             },
2026-06-22T01:34:20.4112221Z             {
2026-06-22T01:34:20.4112332Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4112419Z               "line": 747
2026-06-22T01:34:20.4112504Z             },
2026-06-22T01:34:20.4112599Z             {
2026-06-22T01:34:20.4112710Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4112791Z               "line": 785
2026-06-22T01:34:20.4112875Z             },
2026-06-22T01:34:20.4112955Z             {
2026-06-22T01:34:20.4113065Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:34:20.4113150Z               "line": 8
2026-06-22T01:34:20.4113239Z             }
2026-06-22T01:34:20.4113320Z           ]
2026-06-22T01:34:20.4113402Z         },
2026-06-22T01:34:20.4113488Z         "int": {
2026-06-22T01:34:20.4113587Z           "complete": false,
2026-06-22T01:34:20.4113669Z           "evidence": []
2026-06-22T01:34:20.4113755Z         },
2026-06-22T01:34:20.4113845Z         "unit": {
2026-06-22T01:34:20.4113926Z           "complete": true,
2026-06-22T01:34:20.4114008Z           "evidence": [
2026-06-22T01:34:20.4114187Z             {
2026-06-22T01:34:20.4114298Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4114493Z               "line": 7638
2026-06-22T01:34:20.4114579Z             },
2026-06-22T01:34:20.4114666Z             {
2026-06-22T01:34:20.4114770Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4114860Z               "line": 7649
2026-06-22T01:34:20.4114933Z             },
2026-06-22T01:34:20.4115019Z             {
2026-06-22T01:34:20.4115122Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4115218Z               "line": 879
2026-06-22T01:34:20.4115301Z             },
2026-06-22T01:34:20.4115385Z             {
2026-06-22T01:34:20.4115493Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4115574Z               "line": 928
2026-06-22T01:34:20.4115665Z             },
2026-06-22T01:34:20.4115749Z             {
2026-06-22T01:34:20.4115858Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4115959Z               "line": 979
2026-06-22T01:34:20.4116040Z             },
2026-06-22T01:34:20.4116125Z             {
2026-06-22T01:34:20.4116245Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4116340Z               "line": 996
2026-06-22T01:34:20.4116421Z             },
2026-06-22T01:34:20.4116598Z             {
2026-06-22T01:34:20.4116712Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4116797Z               "line": 1005
2026-06-22T01:34:20.4116885Z             },
2026-06-22T01:34:20.4116965Z             {
2026-06-22T01:34:20.4117079Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4117170Z               "line": 1016
2026-06-22T01:34:20.4117256Z             },
2026-06-22T01:34:20.4117346Z             {
2026-06-22T01:34:20.4117451Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4117543Z               "line": 1038
2026-06-22T01:34:20.4117627Z             },
2026-06-22T01:34:20.4117709Z             {
2026-06-22T01:34:20.4117834Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4117919Z               "line": 1057
2026-06-22T01:34:20.4118023Z             },
2026-06-22T01:34:20.4118105Z             {
2026-06-22T01:34:20.4118220Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4118299Z               "line": 1107
2026-06-22T01:34:20.4118384Z             },
2026-06-22T01:34:20.4118470Z             {
2026-06-22T01:34:20.4118567Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4118661Z               "line": 1136
2026-06-22T01:34:20.4118747Z             },
2026-06-22T01:34:20.4118833Z             {
2026-06-22T01:34:20.4119023Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4119110Z               "line": 1149
2026-06-22T01:34:20.4119191Z             },
2026-06-22T01:34:20.4119277Z             {
2026-06-22T01:34:20.4119381Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4119477Z               "line": 1215
2026-06-22T01:34:20.4119567Z             },
2026-06-22T01:34:20.4119648Z             {
2026-06-22T01:34:20.4119764Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4119854Z               "line": 1256
2026-06-22T01:34:20.4119925Z             },
2026-06-22T01:34:20.4120010Z             {
2026-06-22T01:34:20.4120116Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4120215Z               "line": 1272
2026-06-22T01:34:20.4120297Z             },
2026-06-22T01:34:20.4120383Z             {
2026-06-22T01:34:20.4120493Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:34:20.4120577Z               "line": 491
2026-06-22T01:34:20.4120658Z             },
2026-06-22T01:34:20.4120744Z             {
2026-06-22T01:34:20.4120843Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:34:20.4120927Z               "line": 506
2026-06-22T01:34:20.4121013Z             },
2026-06-22T01:34:20.4121100Z             {
2026-06-22T01:34:20.4121323Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:34:20.4121410Z               "line": 524
2026-06-22T01:34:20.4121580Z             },
2026-06-22T01:34:20.4121662Z             {
2026-06-22T01:34:20.4121772Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:34:20.4121862Z               "line": 546
2026-06-22T01:34:20.4121948Z             },
2026-06-22T01:34:20.4122030Z             {
2026-06-22T01:34:20.4122139Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:34:20.4122224Z               "line": 556
2026-06-22T01:34:20.4122301Z             },
2026-06-22T01:34:20.4122387Z             {
2026-06-22T01:34:20.4122492Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:34:20.4122582Z               "line": 582
2026-06-22T01:34:20.4122654Z             }
2026-06-22T01:34:20.4122744Z           ]
2026-06-22T01:34:20.4122826Z         }
2026-06-22T01:34:20.4122911Z       }
2026-06-22T01:34:20.4123003Z     },
2026-06-22T01:34:20.4123083Z     {
2026-06-22T01:34:20.4123183Z       "id": "REQ-RUN-SHORTCUT",
2026-06-22T01:34:20.4127798Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-22T01:34:20.4127944Z       "requiredStages": [
2026-06-22T01:34:20.4128025Z         "doc",
2026-06-22T01:34:20.4128117Z         "impl",
2026-06-22T01:34:20.4128197Z         "unit"
2026-06-22T01:34:20.4128283Z       ],
2026-06-22T01:34:20.4128370Z       "stages": {
2026-06-22T01:34:20.4128474Z         "doc": {
2026-06-22T01:34:20.4128574Z           "complete": true,
2026-06-22T01:34:20.4128670Z           "evidence": [
2026-06-22T01:34:20.4128757Z             {
2026-06-22T01:34:20.4128845Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4129030Z               "line": 390
2026-06-22T01:34:20.4129103Z             }
2026-06-22T01:34:20.4129188Z           ]
2026-06-22T01:34:20.4129273Z         },
2026-06-22T01:34:20.4129355Z         "impl": {
2026-06-22T01:34:20.4129455Z           "complete": true,
2026-06-22T01:34:20.4129540Z           "evidence": [
2026-06-22T01:34:20.4129626Z             {
2026-06-22T01:34:20.4129756Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:34:20.4129841Z               "line": 39
2026-06-22T01:34:20.4129926Z             },
2026-06-22T01:34:20.4130004Z             {
2026-06-22T01:34:20.4130127Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:34:20.4130208Z               "line": 79
2026-06-22T01:34:20.4130409Z             },
2026-06-22T01:34:20.4130490Z             {
2026-06-22T01:34:20.4130614Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:34:20.4130790Z               "line": 162
2026-06-22T01:34:20.4130876Z             }
2026-06-22T01:34:20.4130958Z           ]
2026-06-22T01:34:20.4131043Z         },
2026-06-22T01:34:20.4131128Z         "int": {
2026-06-22T01:34:20.4131213Z           "complete": false,
2026-06-22T01:34:20.4131304Z           "evidence": []
2026-06-22T01:34:20.4131384Z         },
2026-06-22T01:34:20.4131464Z         "unit": {
2026-06-22T01:34:20.4131563Z           "complete": true,
2026-06-22T01:34:20.4131640Z           "evidence": [
2026-06-22T01:34:20.4131732Z             {
2026-06-22T01:34:20.4131849Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:34:20.4131946Z               "line": 206
2026-06-22T01:34:20.4132031Z             },
2026-06-22T01:34:20.4132112Z             {
2026-06-22T01:34:20.4132222Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:34:20.4132309Z               "line": 222
2026-06-22T01:34:20.4132394Z             },
2026-06-22T01:34:20.4132479Z             {
2026-06-22T01:34:20.4132599Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:34:20.4132694Z               "line": 238
2026-06-22T01:34:20.4132770Z             },
2026-06-22T01:34:20.4132846Z             {
2026-06-22T01:34:20.4132961Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:34:20.4133047Z               "line": 251
2026-06-22T01:34:20.4133132Z             },
2026-06-22T01:34:20.4133215Z             {
2026-06-22T01:34:20.4133333Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:34:20.4133414Z               "line": 258
2026-06-22T01:34:20.4133501Z             }
2026-06-22T01:34:20.4133582Z           ]
2026-06-22T01:34:20.4133666Z         }
2026-06-22T01:34:20.4133747Z       }
2026-06-22T01:34:20.4136290Z     },
2026-06-22T01:34:20.4136397Z     {
2026-06-22T01:34:20.4136510Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-22T01:34:20.4136700Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-22T01:34:20.4136809Z       "requiredStages": [
2026-06-22T01:34:20.4136893Z         "impl",
2026-06-22T01:34:20.4136973Z         "unit"
2026-06-22T01:34:20.4137060Z       ],
2026-06-22T01:34:20.4137147Z       "stages": {
2026-06-22T01:34:20.4137231Z         "doc": {
2026-06-22T01:34:20.4137317Z           "complete": false,
2026-06-22T01:34:20.4137404Z           "evidence": []
2026-06-22T01:34:20.4137485Z         },
2026-06-22T01:34:20.4137560Z         "impl": {
2026-06-22T01:34:20.4137656Z           "complete": true,
2026-06-22T01:34:20.4137751Z           "evidence": [
2026-06-22T01:34:20.4137833Z             {
2026-06-22T01:34:20.4137956Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4138043Z               "line": 18
2026-06-22T01:34:20.4138123Z             },
2026-06-22T01:34:20.4138203Z             {
2026-06-22T01:34:20.4138324Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4138400Z               "line": 35
2026-06-22T01:34:20.4138486Z             },
2026-06-22T01:34:20.4138571Z             {
2026-06-22T01:34:20.4138677Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4138762Z               "line": 72
2026-06-22T01:34:20.4138843Z             }
2026-06-22T01:34:20.4138925Z           ]
2026-06-22T01:34:20.4139090Z         },
2026-06-22T01:34:20.4139172Z         "int": {
2026-06-22T01:34:20.4139259Z           "complete": false,
2026-06-22T01:34:20.4139345Z           "evidence": []
2026-06-22T01:34:20.4139433Z         },
2026-06-22T01:34:20.4139514Z         "unit": {
2026-06-22T01:34:20.4139624Z           "complete": true,
2026-06-22T01:34:20.4139715Z           "evidence": [
2026-06-22T01:34:20.4139791Z             {
2026-06-22T01:34:20.4139896Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4139982Z               "line": 239
2026-06-22T01:34:20.4140201Z             },
2026-06-22T01:34:20.4140287Z             {
2026-06-22T01:34:20.4140397Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4140559Z               "line": 256
2026-06-22T01:34:20.4140640Z             },
2026-06-22T01:34:20.4140726Z             {
2026-06-22T01:34:20.4140835Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4140922Z               "line": 265
2026-06-22T01:34:20.4140997Z             }
2026-06-22T01:34:20.4141083Z           ]
2026-06-22T01:34:20.4141155Z         }
2026-06-22T01:34:20.4141242Z       }
2026-06-22T01:34:20.4141331Z     },
2026-06-22T01:34:20.4141412Z     {
2026-06-22T01:34:20.4141518Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-22T01:34:20.4141664Z       "title": "Hostable endpoint-types capability declaration",
2026-06-22T01:34:20.4141759Z       "requiredStages": [
2026-06-22T01:34:20.4141845Z         "impl",
2026-06-22T01:34:20.4141930Z         "unit"
2026-06-22T01:34:20.4142010Z       ],
2026-06-22T01:34:20.4142095Z       "stages": {
2026-06-22T01:34:20.4142177Z         "doc": {
2026-06-22T01:34:20.4142263Z           "complete": false,
2026-06-22T01:34:20.4142358Z           "evidence": []
2026-06-22T01:34:20.4142439Z         },
2026-06-22T01:34:20.4142515Z         "impl": {
2026-06-22T01:34:20.4142606Z           "complete": true,
2026-06-22T01:34:20.4142687Z           "evidence": [
2026-06-22T01:34:20.4142768Z             {
2026-06-22T01:34:20.4142873Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4142963Z               "line": 598
2026-06-22T01:34:20.4143048Z             }
2026-06-22T01:34:20.4143127Z           ]
2026-06-22T01:34:20.4143207Z         },
2026-06-22T01:34:20.4143283Z         "int": {
2026-06-22T01:34:20.4143368Z           "complete": false,
2026-06-22T01:34:20.4143456Z           "evidence": []
2026-06-22T01:34:20.4143540Z         },
2026-06-22T01:34:20.4143626Z         "unit": {
2026-06-22T01:34:20.4143717Z           "complete": true,
2026-06-22T01:34:20.4143813Z           "evidence": [
2026-06-22T01:34:20.4143888Z             {
2026-06-22T01:34:20.4144007Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4144090Z               "line": 967
2026-06-22T01:34:20.4144165Z             }
2026-06-22T01:34:20.4144245Z           ]
2026-06-22T01:34:20.4144327Z         }
2026-06-22T01:34:20.4144414Z       }
2026-06-22T01:34:20.4144494Z     },
2026-06-22T01:34:20.4144569Z     {
2026-06-22T01:34:20.4144650Z       "id": "REQ-SEAM-HISTORY",
2026-06-22T01:34:20.4144835Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-22T01:34:20.4144924Z       "requiredStages": [
2026-06-22T01:34:20.4145005Z         "impl",
2026-06-22T01:34:20.4145092Z         "unit",
2026-06-22T01:34:20.4145173Z         "int"
2026-06-22T01:34:20.4145262Z       ],
2026-06-22T01:34:20.4145344Z       "stages": {
2026-06-22T01:34:20.4145431Z         "doc": {
2026-06-22T01:34:20.4145525Z           "complete": false,
2026-06-22T01:34:20.4145610Z           "evidence": []
2026-06-22T01:34:20.4145693Z         },
2026-06-22T01:34:20.4145778Z         "impl": {
2026-06-22T01:34:20.4145878Z           "complete": true,
2026-06-22T01:34:20.4145959Z           "evidence": [
2026-06-22T01:34:20.4146046Z             {
2026-06-22T01:34:20.4146160Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:34:20.4146250Z               "line": 24
2026-06-22T01:34:20.4146332Z             },
2026-06-22T01:34:20.4146417Z             {
2026-06-22T01:34:20.4146531Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:34:20.4146618Z               "line": 22
2026-06-22T01:34:20.4146704Z             }
2026-06-22T01:34:20.4146788Z           ]
2026-06-22T01:34:20.4146865Z         },
2026-06-22T01:34:20.4146952Z         "int": {
2026-06-22T01:34:20.4147038Z           "complete": true,
2026-06-22T01:34:20.4147122Z           "evidence": [
2026-06-22T01:34:20.4147207Z             {
2026-06-22T01:34:20.4147331Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.4147500Z               "line": 260
2026-06-22T01:34:20.4147582Z             }
2026-06-22T01:34:20.4147745Z           ]
2026-06-22T01:34:20.4147829Z         },
2026-06-22T01:34:20.4147916Z         "unit": {
2026-06-22T01:34:20.4147997Z           "complete": true,
2026-06-22T01:34:20.4148083Z           "evidence": [
2026-06-22T01:34:20.4148168Z             {
2026-06-22T01:34:20.4148279Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:34:20.4148379Z               "line": 171
2026-06-22T01:34:20.4148463Z             },
2026-06-22T01:34:20.4148546Z             {
2026-06-22T01:34:20.4148655Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:34:20.4148736Z               "line": 200
2026-06-22T01:34:20.4148821Z             },
2026-06-22T01:34:20.4148899Z             {
2026-06-22T01:34:20.4149074Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:34:20.4149155Z               "line": 220
2026-06-22T01:34:20.4149247Z             },
2026-06-22T01:34:20.4149331Z             {
2026-06-22T01:34:20.4149441Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:34:20.4149533Z               "line": 199
2026-06-22T01:34:20.4149609Z             },
2026-06-22T01:34:20.4149694Z             {
2026-06-22T01:34:20.4149800Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:34:20.4149881Z               "line": 219
2026-06-22T01:34:20.4149965Z             },
2026-06-22T01:34:20.4150056Z             {
2026-06-22T01:34:20.4150175Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:34:20.4150262Z               "line": 244
2026-06-22T01:34:20.4150346Z             },
2026-06-22T01:34:20.4150427Z             {
2026-06-22T01:34:20.4150542Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:34:20.4150632Z               "line": 276
2026-06-22T01:34:20.4150718Z             },
2026-06-22T01:34:20.4150800Z             {
2026-06-22T01:34:20.4150904Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:34:20.4150999Z               "line": 297
2026-06-22T01:34:20.4151076Z             },
2026-06-22T01:34:20.4151167Z             {
2026-06-22T01:34:20.4151276Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:34:20.4151367Z               "line": 324
2026-06-22T01:34:20.4151459Z             }
2026-06-22T01:34:20.4151538Z           ]
2026-06-22T01:34:20.4151624Z         }
2026-06-22T01:34:20.4151705Z       }
2026-06-22T01:34:20.4151792Z     },
2026-06-22T01:34:20.4151877Z     {
2026-06-22T01:34:20.4151962Z       "id": "REQ-SEAM-INJECT",
2026-06-22T01:34:20.4152131Z       "title": "inject-input methods configurable per activity-state",
2026-06-22T01:34:20.4152215Z       "requiredStages": [
2026-06-22T01:34:20.4152295Z         "impl",
2026-06-22T01:34:20.4152376Z         "unit"
2026-06-22T01:34:20.4152453Z       ],
2026-06-22T01:34:20.4152537Z       "stages": {
2026-06-22T01:34:20.4152622Z         "doc": {
2026-06-22T01:34:20.4152717Z           "complete": false,
2026-06-22T01:34:20.4152804Z           "evidence": []
2026-06-22T01:34:20.4152889Z         },
2026-06-22T01:34:20.4152974Z         "impl": {
2026-06-22T01:34:20.4153061Z           "complete": true,
2026-06-22T01:34:20.4153152Z           "evidence": [
2026-06-22T01:34:20.4153227Z             {
2026-06-22T01:34:20.4153347Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4153429Z               "line": 19
2026-06-22T01:34:20.4153514Z             },
2026-06-22T01:34:20.4153599Z             {
2026-06-22T01:34:20.4153710Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4153800Z               "line": 111
2026-06-22T01:34:20.4153881Z             }
2026-06-22T01:34:20.4153962Z           ]
2026-06-22T01:34:20.4154034Z         },
2026-06-22T01:34:20.4154520Z         "int": {
2026-06-22T01:34:20.4154611Z           "complete": false,
2026-06-22T01:34:20.4154697Z           "evidence": []
2026-06-22T01:34:20.4154782Z         },
2026-06-22T01:34:20.4154868Z         "unit": {
2026-06-22T01:34:20.4155087Z           "complete": true,
2026-06-22T01:34:20.4155162Z           "evidence": [
2026-06-22T01:34:20.4155329Z             {
2026-06-22T01:34:20.4155447Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4155536Z               "line": 345
2026-06-22T01:34:20.4155628Z             },
2026-06-22T01:34:20.4155704Z             {
2026-06-22T01:34:20.4155813Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4155899Z               "line": 365
2026-06-22T01:34:20.4155986Z             }
2026-06-22T01:34:20.4156071Z           ]
2026-06-22T01:34:20.4156156Z         }
2026-06-22T01:34:20.4156239Z       }
2026-06-22T01:34:20.4156324Z     },
2026-06-22T01:34:20.4156405Z     {
2026-06-22T01:34:20.4156505Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-22T01:34:20.4156644Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-22T01:34:20.4156734Z       "requiredStages": [
2026-06-22T01:34:20.4156815Z         "impl",
2026-06-22T01:34:20.4156916Z         "unit"
2026-06-22T01:34:20.4156996Z       ],
2026-06-22T01:34:20.4157082Z       "stages": {
2026-06-22T01:34:20.4157173Z         "doc": {
2026-06-22T01:34:20.4157264Z           "complete": false,
2026-06-22T01:34:20.4157344Z           "evidence": []
2026-06-22T01:34:20.4157425Z         },
2026-06-22T01:34:20.4157512Z         "impl": {
2026-06-22T01:34:20.4157598Z           "complete": true,
2026-06-22T01:34:20.4157682Z           "evidence": [
2026-06-22T01:34:20.4157762Z             {
2026-06-22T01:34:20.4157877Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4157957Z               "line": 18
2026-06-22T01:34:20.4158041Z             },
2026-06-22T01:34:20.4158122Z             {
2026-06-22T01:34:20.4158224Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4158314Z               "line": 431
2026-06-22T01:34:20.4158394Z             }
2026-06-22T01:34:20.4158481Z           ]
2026-06-22T01:34:20.4158557Z         },
2026-06-22T01:34:20.4158634Z         "int": {
2026-06-22T01:34:20.4158733Z           "complete": false,
2026-06-22T01:34:20.4158815Z           "evidence": []
2026-06-22T01:34:20.4158900Z         },
2026-06-22T01:34:20.4159042Z         "unit": {
2026-06-22T01:34:20.4159129Z           "complete": true,
2026-06-22T01:34:20.4159215Z           "evidence": [
2026-06-22T01:34:20.4159296Z             {
2026-06-22T01:34:20.4159405Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4159488Z               "line": 881
2026-06-22T01:34:20.4159572Z             },
2026-06-22T01:34:20.4159644Z             {
2026-06-22T01:34:20.4159759Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4159840Z               "line": 891
2026-06-22T01:34:20.4159930Z             }
2026-06-22T01:34:20.4160006Z           ]
2026-06-22T01:34:20.4160088Z         }
2026-06-22T01:34:20.4160169Z       }
2026-06-22T01:34:20.4160254Z     },
2026-06-22T01:34:20.4160331Z     {
2026-06-22T01:34:20.4160427Z       "id": "REQ-SEAM-PSYCHE",
2026-06-22T01:34:20.4160568Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-22T01:34:20.4160663Z       "requiredStages": [
2026-06-22T01:34:20.4160744Z         "impl",
2026-06-22T01:34:20.4160827Z         "unit",
2026-06-22T01:34:20.4160906Z         "int"
2026-06-22T01:34:20.4160992Z       ],
2026-06-22T01:34:20.4161079Z       "stages": {
2026-06-22T01:34:20.4161165Z         "doc": {
2026-06-22T01:34:20.4161259Z           "complete": false,
2026-06-22T01:34:20.4161341Z           "evidence": []
2026-06-22T01:34:20.4161427Z         },
2026-06-22T01:34:20.4161513Z         "impl": {
2026-06-22T01:34:20.4161602Z           "complete": true,
2026-06-22T01:34:20.4161684Z           "evidence": [
2026-06-22T01:34:20.4161765Z             {
2026-06-22T01:34:20.4161869Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:34:20.4161960Z               "line": 19
2026-06-22T01:34:20.4162047Z             },
2026-06-22T01:34:20.4162122Z             {
2026-06-22T01:34:20.4162237Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T01:34:20.4162413Z               "line": 12
2026-06-22T01:34:20.4162499Z             },
2026-06-22T01:34:20.4162672Z             {
2026-06-22T01:34:20.4162789Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4162879Z               "line": 301
2026-06-22T01:34:20.4162955Z             }
2026-06-22T01:34:20.4163036Z           ]
2026-06-22T01:34:20.4163120Z         },
2026-06-22T01:34:20.4163205Z         "int": {
2026-06-22T01:34:20.4163297Z           "complete": true,
2026-06-22T01:34:20.4163384Z           "evidence": [
2026-06-22T01:34:20.4163468Z             {
2026-06-22T01:34:20.4163588Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.4163669Z               "line": 259
2026-06-22T01:34:20.4163754Z             }
2026-06-22T01:34:20.4163835Z           ]
2026-06-22T01:34:20.4163922Z         },
2026-06-22T01:34:20.4164003Z         "unit": {
2026-06-22T01:34:20.4164092Z           "complete": true,
2026-06-22T01:34:20.4164193Z           "evidence": [
2026-06-22T01:34:20.4164280Z             {
2026-06-22T01:34:20.4164384Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:34:20.4164484Z               "line": 195
2026-06-22T01:34:20.4164566Z             },
2026-06-22T01:34:20.4164646Z             {
2026-06-22T01:34:20.4164756Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:34:20.4164837Z               "line": 202
2026-06-22T01:34:20.4164919Z             },
2026-06-22T01:34:20.4164999Z             {
2026-06-22T01:34:20.4165109Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:34:20.4165200Z               "line": 225
2026-06-22T01:34:20.4165281Z             },
2026-06-22T01:34:20.4165361Z             {
2026-06-22T01:34:20.4165472Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T01:34:20.4165554Z               "line": 106
2026-06-22T01:34:20.4165642Z             },
2026-06-22T01:34:20.4165727Z             {
2026-06-22T01:34:20.4165837Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T01:34:20.4165922Z               "line": 137
2026-06-22T01:34:20.4166016Z             },
2026-06-22T01:34:20.4166101Z             {
2026-06-22T01:34:20.4166212Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T01:34:20.4166298Z               "line": 161
2026-06-22T01:34:20.4166387Z             }
2026-06-22T01:34:20.4166474Z           ]
2026-06-22T01:34:20.4166556Z         }
2026-06-22T01:34:20.4166636Z       }
2026-06-22T01:34:20.4166716Z     },
2026-06-22T01:34:20.4166804Z     {
2026-06-22T01:34:20.4166894Z       "id": "REQ-SEAM-RESUME",
2026-06-22T01:34:20.4167075Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-22T01:34:20.4167170Z       "requiredStages": [
2026-06-22T01:34:20.4167251Z         "impl",
2026-06-22T01:34:20.4167342Z         "unit"
2026-06-22T01:34:20.4167428Z       ],
2026-06-22T01:34:20.4167514Z       "stages": {
2026-06-22T01:34:20.4167599Z         "doc": {
2026-06-22T01:34:20.4167699Z           "complete": false,
2026-06-22T01:34:20.4167791Z           "evidence": []
2026-06-22T01:34:20.4167871Z         },
2026-06-22T01:34:20.4167967Z         "impl": {
2026-06-22T01:34:20.4168053Z           "complete": true,
2026-06-22T01:34:20.4168139Z           "evidence": [
2026-06-22T01:34:20.4168214Z             {
2026-06-22T01:34:20.4168322Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:34:20.4168399Z               "line": 19
2026-06-22T01:34:20.4168484Z             }
2026-06-22T01:34:20.4168569Z           ]
2026-06-22T01:34:20.4168639Z         },
2026-06-22T01:34:20.4168726Z         "int": {
2026-06-22T01:34:20.4168808Z           "complete": false,
2026-06-22T01:34:20.4168888Z           "evidence": []
2026-06-22T01:34:20.4169060Z         },
2026-06-22T01:34:20.4169141Z         "unit": {
2026-06-22T01:34:20.4169236Z           "complete": true,
2026-06-22T01:34:20.4169322Z           "evidence": [
2026-06-22T01:34:20.4169413Z             {
2026-06-22T01:34:20.4169523Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:34:20.4169723Z               "line": 201
2026-06-22T01:34:20.4169894Z             },
2026-06-22T01:34:20.4169966Z             {
2026-06-22T01:34:20.4170080Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:34:20.4170166Z               "line": 223
2026-06-22T01:34:20.4170247Z             },
2026-06-22T01:34:20.4170329Z             {
2026-06-22T01:34:20.4170438Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:34:20.4170519Z               "line": 244
2026-06-22T01:34:20.4170605Z             }
2026-06-22T01:34:20.4170682Z           ]
2026-06-22T01:34:20.4170752Z         }
2026-06-22T01:34:20.4170843Z       }
2026-06-22T01:34:20.4170925Z     },
2026-06-22T01:34:20.4171006Z     {
2026-06-22T01:34:20.4171105Z       "id": "REQ-SEAM-SPAWN",
2026-06-22T01:34:20.4171204Z       "title": "spawn-session seam",
2026-06-22T01:34:20.4171314Z       "requiredStages": [
2026-06-22T01:34:20.4171396Z         "impl",
2026-06-22T01:34:20.4171490Z         "unit"
2026-06-22T01:34:20.4171571Z       ],
2026-06-22T01:34:20.4171677Z       "stages": {
2026-06-22T01:34:20.4171786Z         "doc": {
2026-06-22T01:34:20.4171871Z           "complete": false,
2026-06-22T01:34:20.4172001Z           "evidence": []
2026-06-22T01:34:20.4172087Z         },
2026-06-22T01:34:20.4172177Z         "impl": {
2026-06-22T01:34:20.4172288Z           "complete": true,
2026-06-22T01:34:20.4172372Z           "evidence": [
2026-06-22T01:34:20.4172462Z             {
2026-06-22T01:34:20.4172588Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.4172682Z               "line": 20
2026-06-22T01:34:20.4172773Z             }
2026-06-22T01:34:20.4172860Z           ]
2026-06-22T01:34:20.4172950Z         },
2026-06-22T01:34:20.4173039Z         "int": {
2026-06-22T01:34:20.4173136Z           "complete": false,
2026-06-22T01:34:20.4173232Z           "evidence": []
2026-06-22T01:34:20.4173317Z         },
2026-06-22T01:34:20.4173406Z         "unit": {
2026-06-22T01:34:20.4173511Z           "complete": true,
2026-06-22T01:34:20.4173606Z           "evidence": [
2026-06-22T01:34:20.4173695Z             {
2026-06-22T01:34:20.4173824Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.4173919Z               "line": 608
2026-06-22T01:34:20.4174000Z             },
2026-06-22T01:34:20.4174081Z             {
2026-06-22T01:34:20.4174186Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.4174272Z               "line": 615
2026-06-22T01:34:20.4174352Z             },
2026-06-22T01:34:20.4174438Z             {
2026-06-22T01:34:20.4174553Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.4174644Z               "line": 721
2026-06-22T01:34:20.4174729Z             },
2026-06-22T01:34:20.4174811Z             {
2026-06-22T01:34:20.4174920Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.4175015Z               "line": 727
2026-06-22T01:34:20.4175092Z             },
2026-06-22T01:34:20.4175188Z             {
2026-06-22T01:34:20.4175297Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.4175387Z               "line": 752
2026-06-22T01:34:20.4175475Z             },
2026-06-22T01:34:20.4175587Z             {
2026-06-22T01:34:20.4175712Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:34:20.4175808Z               "line": 789
2026-06-22T01:34:20.4175887Z             }
2026-06-22T01:34:20.4175974Z           ]
2026-06-22T01:34:20.4176061Z         }
2026-06-22T01:34:20.4176151Z       }
2026-06-22T01:34:20.4176240Z     },
2026-06-22T01:34:20.4176320Z     {
2026-06-22T01:34:20.4176426Z       "id": "REQ-SEAM-UPDATE",
2026-06-22T01:34:20.4176591Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-22T01:34:20.4176691Z       "requiredStages": [
2026-06-22T01:34:20.4176772Z         "impl",
2026-06-22T01:34:20.4176862Z         "unit"
2026-06-22T01:34:20.4176948Z       ],
2026-06-22T01:34:20.4177130Z       "stages": {
2026-06-22T01:34:20.4177219Z         "doc": {
2026-06-22T01:34:20.4177305Z           "complete": false,
2026-06-22T01:34:20.4177463Z           "evidence": []
2026-06-22T01:34:20.4177534Z         },
2026-06-22T01:34:20.4177620Z         "impl": {
2026-06-22T01:34:20.4177717Z           "complete": true,
2026-06-22T01:34:20.4177802Z           "evidence": [
2026-06-22T01:34:20.4177887Z             {
2026-06-22T01:34:20.4178018Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4178107Z               "line": 28
2026-06-22T01:34:20.4178188Z             },
2026-06-22T01:34:20.4178279Z             {
2026-06-22T01:34:20.4178408Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4178493Z               "line": 88
2026-06-22T01:34:20.4178579Z             }
2026-06-22T01:34:20.4178647Z           ]
2026-06-22T01:34:20.4178732Z         },
2026-06-22T01:34:20.4178817Z         "int": {
2026-06-22T01:34:20.4178916Z           "complete": false,
2026-06-22T01:34:20.4179082Z           "evidence": []
2026-06-22T01:34:20.4179162Z         },
2026-06-22T01:34:20.4179252Z         "unit": {
2026-06-22T01:34:20.4179349Z           "complete": true,
2026-06-22T01:34:20.4179443Z           "evidence": [
2026-06-22T01:34:20.4179528Z             {
2026-06-22T01:34:20.4179649Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4179740Z               "line": 326
2026-06-22T01:34:20.4179810Z             },
2026-06-22T01:34:20.4179896Z             {
2026-06-22T01:34:20.4180016Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4180106Z               "line": 337
2026-06-22T01:34:20.4180182Z             }
2026-06-22T01:34:20.4180269Z           ]
2026-06-22T01:34:20.4180359Z         }
2026-06-22T01:34:20.4180449Z       }
2026-06-22T01:34:20.4180540Z     },
2026-06-22T01:34:20.4180622Z     {
2026-06-22T01:34:20.4180726Z       "id": "REQ-SEC-1",
2026-06-22T01:34:20.4181126Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-22T01:34:20.4181232Z       "requiredStages": [
2026-06-22T01:34:20.4181322Z         "impl",
2026-06-22T01:34:20.4181399Z         "unit"
2026-06-22T01:34:20.4181485Z       ],
2026-06-22T01:34:20.4181576Z       "stages": {
2026-06-22T01:34:20.4181660Z         "doc": {
2026-06-22T01:34:20.4181745Z           "complete": false,
2026-06-22T01:34:20.4181831Z           "evidence": []
2026-06-22T01:34:20.4181918Z         },
2026-06-22T01:34:20.4181998Z         "impl": {
2026-06-22T01:34:20.4182093Z           "complete": true,
2026-06-22T01:34:20.4182170Z           "evidence": [
2026-06-22T01:34:20.4182247Z             {
2026-06-22T01:34:20.4182360Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:34:20.4182456Z               "line": 86
2026-06-22T01:34:20.4182543Z             },
2026-06-22T01:34:20.4182614Z             {
2026-06-22T01:34:20.4182732Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:34:20.4182828Z               "line": 116
2026-06-22T01:34:20.4182914Z             },
2026-06-22T01:34:20.4182995Z             {
2026-06-22T01:34:20.4183110Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:34:20.4183196Z               "line": 130
2026-06-22T01:34:20.4183281Z             },
2026-06-22T01:34:20.4183366Z             {
2026-06-22T01:34:20.4183482Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4183562Z               "line": 109
2026-06-22T01:34:20.4183643Z             },
2026-06-22T01:34:20.4183724Z             {
2026-06-22T01:34:20.4183844Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4183924Z               "line": 130
2026-06-22T01:34:20.4184004Z             },
2026-06-22T01:34:20.4184085Z             {
2026-06-22T01:34:20.4184194Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4184279Z               "line": 143
2026-06-22T01:34:20.4184470Z             },
2026-06-22T01:34:20.4184556Z             {
2026-06-22T01:34:20.4184674Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4184837Z               "line": 209
2026-06-22T01:34:20.4184922Z             },
2026-06-22T01:34:20.4185013Z             {
2026-06-22T01:34:20.4185128Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4185213Z               "line": 235
2026-06-22T01:34:20.4185304Z             },
2026-06-22T01:34:20.4185391Z             {
2026-06-22T01:34:20.4185495Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4185585Z               "line": 5295
2026-06-22T01:34:20.4185705Z             }
2026-06-22T01:34:20.4185804Z           ]
2026-06-22T01:34:20.4185876Z         },
2026-06-22T01:34:20.4185957Z         "int": {
2026-06-22T01:34:20.4186039Z           "complete": false,
2026-06-22T01:34:20.4186128Z           "evidence": []
2026-06-22T01:34:20.4186214Z         },
2026-06-22T01:34:20.4186302Z         "unit": {
2026-06-22T01:34:20.4186406Z           "complete": true,
2026-06-22T01:34:20.4186491Z           "evidence": [
2026-06-22T01:34:20.4186582Z             {
2026-06-22T01:34:20.4186698Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:34:20.4186791Z               "line": 142
2026-06-22T01:34:20.4186876Z             },
2026-06-22T01:34:20.4186967Z             {
2026-06-22T01:34:20.4187080Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:34:20.4187169Z               "line": 194
2026-06-22T01:34:20.4187256Z             },
2026-06-22T01:34:20.4187342Z             {
2026-06-22T01:34:20.4187456Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:34:20.4187541Z               "line": 235
2026-06-22T01:34:20.4187619Z             },
2026-06-22T01:34:20.4187704Z             {
2026-06-22T01:34:20.4187827Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-22T01:34:20.4187909Z               "line": 140
2026-06-22T01:34:20.4187990Z             },
2026-06-22T01:34:20.4188080Z             {
2026-06-22T01:34:20.4188180Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4188277Z               "line": 247
2026-06-22T01:34:20.4188357Z             },
2026-06-22T01:34:20.4188443Z             {
2026-06-22T01:34:20.4188548Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4188634Z               "line": 277
2026-06-22T01:34:20.4188762Z             },
2026-06-22T01:34:20.4188849Z             {
2026-06-22T01:34:20.4189043Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4189134Z               "line": 310
2026-06-22T01:34:20.4189217Z             },
2026-06-22T01:34:20.4189301Z             {
2026-06-22T01:34:20.4189410Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4189495Z               "line": 329
2026-06-22T01:34:20.4189576Z             },
2026-06-22T01:34:20.4189660Z             {
2026-06-22T01:34:20.4189774Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4189861Z               "line": 362
2026-06-22T01:34:20.4189952Z             },
2026-06-22T01:34:20.4190037Z             {
2026-06-22T01:34:20.4190151Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:34:20.4190238Z               "line": 386
2026-06-22T01:34:20.4190323Z             },
2026-06-22T01:34:20.4190413Z             {
2026-06-22T01:34:20.4190505Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4190600Z               "line": 8296
2026-06-22T01:34:20.4190675Z             }
2026-06-22T01:34:20.4190762Z           ]
2026-06-22T01:34:20.4190857Z         }
2026-06-22T01:34:20.4190938Z       }
2026-06-22T01:34:20.4191029Z     },
2026-06-22T01:34:20.4191100Z     {
2026-06-22T01:34:20.4191200Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-22T01:34:20.4194958Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-22T01:34:20.4195301Z       "requiredStages": [
2026-06-22T01:34:20.4195402Z         "impl",
2026-06-22T01:34:20.4195487Z         "unit",
2026-06-22T01:34:20.4195573Z         "int"
2026-06-22T01:34:20.4195660Z       ],
2026-06-22T01:34:20.4195745Z       "stages": {
2026-06-22T01:34:20.4195816Z         "doc": {
2026-06-22T01:34:20.4195913Z           "complete": false,
2026-06-22T01:34:20.4195998Z           "evidence": []
2026-06-22T01:34:20.4196084Z         },
2026-06-22T01:34:20.4196159Z         "impl": {
2026-06-22T01:34:20.4196251Z           "complete": true,
2026-06-22T01:34:20.4196332Z           "evidence": [
2026-06-22T01:34:20.4196417Z             {
2026-06-22T01:34:20.4196542Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.4196628Z               "line": 1160
2026-06-22T01:34:20.4196712Z             },
2026-06-22T01:34:20.4196793Z             {
2026-06-22T01:34:20.4196919Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4197013Z               "line": 1976
2026-06-22T01:34:20.4197099Z             },
2026-06-22T01:34:20.4197191Z             {
2026-06-22T01:34:20.4197295Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4197384Z               "line": 2850
2026-06-22T01:34:20.4197464Z             }
2026-06-22T01:34:20.4197541Z           ]
2026-06-22T01:34:20.4197622Z         },
2026-06-22T01:34:20.4197711Z         "int": {
2026-06-22T01:34:20.4197801Z           "complete": true,
2026-06-22T01:34:20.4197893Z           "evidence": [
2026-06-22T01:34:20.4197979Z             {
2026-06-22T01:34:20.4198092Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:34:20.4198184Z               "line": 189
2026-06-22T01:34:20.4198264Z             },
2026-06-22T01:34:20.4198349Z             {
2026-06-22T01:34:20.4198474Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:34:20.4198564Z               "line": 524
2026-06-22T01:34:20.4198650Z             }
2026-06-22T01:34:20.4198736Z           ]
2026-06-22T01:34:20.4198827Z         },
2026-06-22T01:34:20.4198912Z         "unit": {
2026-06-22T01:34:20.4199069Z           "complete": true,
2026-06-22T01:34:20.4199157Z           "evidence": [
2026-06-22T01:34:20.4199241Z             {
2026-06-22T01:34:20.4199346Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.4199433Z               "line": 980
2026-06-22T01:34:20.4199514Z             },
2026-06-22T01:34:20.4199598Z             {
2026-06-22T01:34:20.4199699Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4199801Z               "line": 7486
2026-06-22T01:34:20.4199885Z             }
2026-06-22T01:34:20.4199975Z           ]
2026-06-22T01:34:20.4200056Z         }
2026-06-22T01:34:20.4200142Z       }
2026-06-22T01:34:20.4200220Z     },
2026-06-22T01:34:20.4200315Z     {
2026-06-22T01:34:20.4200421Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-22T01:34:20.4207258Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-22T01:34:20.4207606Z       "requiredStages": [
2026-06-22T01:34:20.4211381Z         "doc",
2026-06-22T01:34:20.4211486Z         "impl",
2026-06-22T01:34:20.4211572Z         "unit",
2026-06-22T01:34:20.4211658Z         "int"
2026-06-22T01:34:20.4211740Z       ],
2026-06-22T01:34:20.4211824Z       "stages": {
2026-06-22T01:34:20.4211906Z         "doc": {
2026-06-22T01:34:20.4212006Z           "complete": true,
2026-06-22T01:34:20.4212096Z           "evidence": [
2026-06-22T01:34:20.4212201Z             {
2026-06-22T01:34:20.4212354Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T01:34:20.4212449Z               "line": 130
2026-06-22T01:34:20.4212536Z             },
2026-06-22T01:34:20.4212622Z             {
2026-06-22T01:34:20.4212721Z               "path": "docs/MANIFEST.md",
2026-06-22T01:34:20.4212821Z               "line": 96
2026-06-22T01:34:20.4212909Z             }
2026-06-22T01:34:20.4212988Z           ]
2026-06-22T01:34:20.4213079Z         },
2026-06-22T01:34:20.4213166Z         "impl": {
2026-06-22T01:34:20.4213247Z           "complete": true,
2026-06-22T01:34:20.4213335Z           "evidence": [
2026-06-22T01:34:20.4213416Z             {
2026-06-22T01:34:20.4213555Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.4213641Z               "line": 77
2026-06-22T01:34:20.4213721Z             },
2026-06-22T01:34:20.4213807Z             {
2026-06-22T01:34:20.4213932Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.4214026Z               "line": 183
2026-06-22T01:34:20.4214102Z             },
2026-06-22T01:34:20.4214180Z             {
2026-06-22T01:34:20.4214308Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4214398Z               "line": 222
2026-06-22T01:34:20.4214485Z             },
2026-06-22T01:34:20.4214722Z             {
2026-06-22T01:34:20.4214847Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4215023Z               "line": 71
2026-06-22T01:34:20.4215105Z             },
2026-06-22T01:34:20.4215190Z             {
2026-06-22T01:34:20.4215304Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4215390Z               "line": 176
2026-06-22T01:34:20.4215468Z             }
2026-06-22T01:34:20.4215552Z           ]
2026-06-22T01:34:20.4215633Z         },
2026-06-22T01:34:20.4215723Z         "int": {
2026-06-22T01:34:20.4215823Z           "complete": true,
2026-06-22T01:34:20.4215916Z           "evidence": [
2026-06-22T01:34:20.4216001Z             {
2026-06-22T01:34:20.4216136Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-22T01:34:20.4216226Z               "line": 25
2026-06-22T01:34:20.4216316Z             }
2026-06-22T01:34:20.4216398Z           ]
2026-06-22T01:34:20.4216485Z         },
2026-06-22T01:34:20.4216674Z         "unit": {
2026-06-22T01:34:20.4216775Z           "complete": true,
2026-06-22T01:34:20.4216856Z           "evidence": [
2026-06-22T01:34:20.4216946Z             {
2026-06-22T01:34:20.4217066Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.4217156Z               "line": 341
2026-06-22T01:34:20.4217242Z             },
2026-06-22T01:34:20.4217328Z             {
2026-06-22T01:34:20.4217447Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:34:20.4217533Z               "line": 391
2026-06-22T01:34:20.4217618Z             },
2026-06-22T01:34:20.4217705Z             {
2026-06-22T01:34:20.4217833Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4217933Z               "line": 1244
2026-06-22T01:34:20.4218016Z             },
2026-06-22T01:34:20.4218105Z             {
2026-06-22T01:34:20.4218224Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4218316Z               "line": 184
2026-06-22T01:34:20.4218415Z             },
2026-06-22T01:34:20.4218495Z             {
2026-06-22T01:34:20.4218619Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4218704Z               "line": 208
2026-06-22T01:34:20.4218793Z             },
2026-06-22T01:34:20.4218878Z             {
2026-06-22T01:34:20.4219070Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4219155Z               "line": 236
2026-06-22T01:34:20.4219241Z             },
2026-06-22T01:34:20.4219337Z             {
2026-06-22T01:34:20.4219451Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:34:20.4219546Z               "line": 945
2026-06-22T01:34:20.4219623Z             }
2026-06-22T01:34:20.4219709Z           ]
2026-06-22T01:34:20.4219794Z         }
2026-06-22T01:34:20.4219875Z       }
2026-06-22T01:34:20.4219962Z     },
2026-06-22T01:34:20.4220047Z     {
2026-06-22T01:34:20.4220147Z       "id": "REQ-SHELL-1",
2026-06-22T01:34:20.4221015Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-22T01:34:20.4221109Z       "requiredStages": [
2026-06-22T01:34:20.4221190Z         "impl",
2026-06-22T01:34:20.4221276Z         "unit",
2026-06-22T01:34:20.4221360Z         "int"
2026-06-22T01:34:20.4221445Z       ],
2026-06-22T01:34:20.4221527Z       "stages": {
2026-06-22T01:34:20.4221613Z         "doc": {
2026-06-22T01:34:20.4221698Z           "complete": false,
2026-06-22T01:34:20.4221784Z           "evidence": []
2026-06-22T01:34:20.4221866Z         },
2026-06-22T01:34:20.4221956Z         "impl": {
2026-06-22T01:34:20.4222041Z           "complete": true,
2026-06-22T01:34:20.4222127Z           "evidence": [
2026-06-22T01:34:20.4222214Z             {
2026-06-22T01:34:20.4222337Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4222538Z               "line": 189
2026-06-22T01:34:20.4222618Z             },
2026-06-22T01:34:20.4222800Z             {
2026-06-22T01:34:20.4222918Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4223014Z               "line": 268
2026-06-22T01:34:20.4223096Z             },
2026-06-22T01:34:20.4223182Z             {
2026-06-22T01:34:20.4223305Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4223391Z               "line": 27
2026-06-22T01:34:20.4223478Z             },
2026-06-22T01:34:20.4223562Z             {
2026-06-22T01:34:20.4223682Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4223764Z               "line": 52
2026-06-22T01:34:20.4223849Z             },
2026-06-22T01:34:20.4223933Z             {
2026-06-22T01:34:20.4224043Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4224125Z               "line": 144
2026-06-22T01:34:20.4224215Z             },
2026-06-22T01:34:20.4224300Z             {
2026-06-22T01:34:20.4224420Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4224516Z               "line": 176
2026-06-22T01:34:20.4224596Z             },
2026-06-22T01:34:20.4224682Z             {
2026-06-22T01:34:20.4224801Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4224882Z               "line": 22
2026-06-22T01:34:20.4224968Z             },
2026-06-22T01:34:20.4225040Z             {
2026-06-22T01:34:20.4225150Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4225230Z               "line": 65
2026-06-22T01:34:20.4225311Z             },
2026-06-22T01:34:20.4225394Z             {
2026-06-22T01:34:20.4225512Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4225593Z               "line": 76
2026-06-22T01:34:20.4225675Z             },
2026-06-22T01:34:20.4225755Z             {
2026-06-22T01:34:20.4225874Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4225970Z               "line": 151
2026-06-22T01:34:20.4226056Z             },
2026-06-22T01:34:20.4226145Z             {
2026-06-22T01:34:20.4226259Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4226345Z               "line": 210
2026-06-22T01:34:20.4226430Z             },
2026-06-22T01:34:20.4226515Z             {
2026-06-22T01:34:20.4226634Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4226725Z               "line": 259
2026-06-22T01:34:20.4226810Z             },
2026-06-22T01:34:20.4226890Z             {
2026-06-22T01:34:20.4227011Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4227096Z               "line": 281
2026-06-22T01:34:20.4227187Z             },
2026-06-22T01:34:20.4227268Z             {
2026-06-22T01:34:20.4227378Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4227458Z               "line": 294
2026-06-22T01:34:20.4227544Z             },
2026-06-22T01:34:20.4227631Z             {
2026-06-22T01:34:20.4227750Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.4227844Z               "line": 217
2026-06-22T01:34:20.4227932Z             },
2026-06-22T01:34:20.4228012Z             {
2026-06-22T01:34:20.4228117Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.4228203Z               "line": 233
2026-06-22T01:34:20.4228284Z             },
2026-06-22T01:34:20.4228369Z             {
2026-06-22T01:34:20.4228498Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.4228590Z               "line": 41
2026-06-22T01:34:20.4228674Z             },
2026-06-22T01:34:20.4228765Z             {
2026-06-22T01:34:20.4228871Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.4229032Z               "line": 222
2026-06-22T01:34:20.4229098Z             },
2026-06-22T01:34:20.4229188Z             {
2026-06-22T01:34:20.4229443Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:34:20.4229520Z               "line": 173
2026-06-22T01:34:20.4229697Z             },
2026-06-22T01:34:20.4229782Z             {
2026-06-22T01:34:20.4229893Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.4229974Z               "line": 354
2026-06-22T01:34:20.4230049Z             },
2026-06-22T01:34:20.4230135Z             {
2026-06-22T01:34:20.4230245Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.4230326Z               "line": 419
2026-06-22T01:34:20.4230406Z             },
2026-06-22T01:34:20.4230484Z             {
2026-06-22T01:34:20.4230598Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4230679Z               "line": 333
2026-06-22T01:34:20.4230765Z             },
2026-06-22T01:34:20.4230842Z             {
2026-06-22T01:34:20.4230945Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4231031Z               "line": 6320
2026-06-22T01:34:20.4231114Z             },
2026-06-22T01:34:20.4231199Z             {
2026-06-22T01:34:20.4231298Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4231390Z               "line": 6470
2026-06-22T01:34:20.4231476Z             },
2026-06-22T01:34:20.4231556Z             {
2026-06-22T01:34:20.4231655Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4231741Z               "line": 6646
2026-06-22T01:34:20.4231822Z             }
2026-06-22T01:34:20.4231906Z           ]
2026-06-22T01:34:20.4231996Z         },
2026-06-22T01:34:20.4232077Z         "int": {
2026-06-22T01:34:20.4232183Z           "complete": true,
2026-06-22T01:34:20.4232268Z           "evidence": [
2026-06-22T01:34:20.4232349Z             {
2026-06-22T01:34:20.4232460Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.4232555Z               "line": 713
2026-06-22T01:34:20.4232634Z             },
2026-06-22T01:34:20.4232712Z             {
2026-06-22T01:34:20.4232845Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T01:34:20.4232935Z               "line": 8
2026-06-22T01:34:20.4233027Z             },
2026-06-22T01:34:20.4233112Z             {
2026-06-22T01:34:20.4233236Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T01:34:20.4233321Z               "line": 49
2026-06-22T01:34:20.4233394Z             },
2026-06-22T01:34:20.4233483Z             {
2026-06-22T01:34:20.4233598Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4233685Z               "line": 778
2026-06-22T01:34:20.4233770Z             },
2026-06-22T01:34:20.4233870Z             {
2026-06-22T01:34:20.4233995Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4234085Z               "line": 1213
2026-06-22T01:34:20.4234160Z             },
2026-06-22T01:34:20.4234237Z             {
2026-06-22T01:34:20.4234358Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T01:34:20.4234438Z               "line": 17
2026-06-22T01:34:20.4234532Z             },
2026-06-22T01:34:20.4234627Z             {
2026-06-22T01:34:20.4234738Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T01:34:20.4234822Z               "line": 14
2026-06-22T01:34:20.4234903Z             }
2026-06-22T01:34:20.4234985Z           ]
2026-06-22T01:34:20.4235056Z         },
2026-06-22T01:34:20.4235146Z         "unit": {
2026-06-22T01:34:20.4235237Z           "complete": true,
2026-06-22T01:34:20.4235320Z           "evidence": [
2026-06-22T01:34:20.4235405Z             {
2026-06-22T01:34:20.4235523Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4235605Z               "line": 246
2026-06-22T01:34:20.4235690Z             },
2026-06-22T01:34:20.4235776Z             {
2026-06-22T01:34:20.4235891Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4235978Z               "line": 279
2026-06-22T01:34:20.4236067Z             },
2026-06-22T01:34:20.4236148Z             {
2026-06-22T01:34:20.4236344Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4236429Z               "line": 319
2026-06-22T01:34:20.4236603Z             },
2026-06-22T01:34:20.4236691Z             {
2026-06-22T01:34:20.4236805Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4236896Z               "line": 599
2026-06-22T01:34:20.4236971Z             },
2026-06-22T01:34:20.4237056Z             {
2026-06-22T01:34:20.4237170Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4237247Z               "line": 672
2026-06-22T01:34:20.4237333Z             },
2026-06-22T01:34:20.4237413Z             {
2026-06-22T01:34:20.4237528Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4237614Z               "line": 816
2026-06-22T01:34:20.4237694Z             },
2026-06-22T01:34:20.4237784Z             {
2026-06-22T01:34:20.4237891Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.4237981Z               "line": 595
2026-06-22T01:34:20.4238134Z             },
2026-06-22T01:34:20.4238219Z             {
2026-06-22T01:34:20.4238343Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:34:20.4238433Z               "line": 399
2026-06-22T01:34:20.4238516Z             },
2026-06-22T01:34:20.4238596Z             {
2026-06-22T01:34:20.4238696Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4238778Z               "line": 8976
2026-06-22T01:34:20.4238859Z             },
2026-06-22T01:34:20.4239010Z             {
2026-06-22T01:34:20.4239112Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4239202Z               "line": 9300
2026-06-22T01:34:20.4239282Z             },
2026-06-22T01:34:20.4239368Z             {
2026-06-22T01:34:20.4239470Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4239554Z               "line": 9717
2026-06-22T01:34:20.4239634Z             }
2026-06-22T01:34:20.4239720Z           ]
2026-06-22T01:34:20.4239810Z         }
2026-06-22T01:34:20.4239894Z       }
2026-06-22T01:34:20.4239980Z     },
2026-06-22T01:34:20.4240051Z     {
2026-06-22T01:34:20.4240143Z       "id": "REQ-SHELL-2",
2026-06-22T01:34:20.4241601Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-22T01:34:20.4241693Z       "requiredStages": [
2026-06-22T01:34:20.4241783Z         "impl",
2026-06-22T01:34:20.4241858Z         "unit",
2026-06-22T01:34:20.4241945Z         "int"
2026-06-22T01:34:20.4242018Z       ],
2026-06-22T01:34:20.4242093Z       "stages": {
2026-06-22T01:34:20.4242177Z         "doc": {
2026-06-22T01:34:20.4242277Z           "complete": false,
2026-06-22T01:34:20.4242363Z           "evidence": []
2026-06-22T01:34:20.4242452Z         },
2026-06-22T01:34:20.4242541Z         "impl": {
2026-06-22T01:34:20.4242628Z           "complete": true,
2026-06-22T01:34:20.4242710Z           "evidence": [
2026-06-22T01:34:20.4242800Z             {
2026-06-22T01:34:20.4242918Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.4243000Z               "line": 217
2026-06-22T01:34:20.4243081Z             },
2026-06-22T01:34:20.4243171Z             {
2026-06-22T01:34:20.4243277Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.4243363Z               "line": 403
2026-06-22T01:34:20.4243448Z             },
2026-06-22T01:34:20.4243528Z             {
2026-06-22T01:34:20.4243639Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:34:20.4243720Z               "line": 250
2026-06-22T01:34:20.4243805Z             },
2026-06-22T01:34:20.4243992Z             {
2026-06-22T01:34:20.4244116Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.4244298Z               "line": 403
2026-06-22T01:34:20.4244377Z             },
2026-06-22T01:34:20.4244463Z             {
2026-06-22T01:34:20.4244570Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4244669Z               "line": 30
2026-06-22T01:34:20.4244755Z             },
2026-06-22T01:34:20.4244827Z             {
2026-06-22T01:34:20.4244946Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4245035Z               "line": 409
2026-06-22T01:34:20.4245120Z             },
2026-06-22T01:34:20.4245206Z             {
2026-06-22T01:34:20.4245317Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4245406Z               "line": 445
2026-06-22T01:34:20.4245487Z             },
2026-06-22T01:34:20.4245575Z             {
2026-06-22T01:34:20.4245679Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4245778Z               "line": 660
2026-06-22T01:34:20.4245860Z             },
2026-06-22T01:34:20.4245955Z             {
2026-06-22T01:34:20.4246074Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.4246161Z               "line": 348
2026-06-22T01:34:20.4246246Z             },
2026-06-22T01:34:20.4246327Z             {
2026-06-22T01:34:20.4246441Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4246528Z               "line": 115
2026-06-22T01:34:20.4246613Z             },
2026-06-22T01:34:20.4246694Z             {
2026-06-22T01:34:20.4246795Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4246886Z               "line": 120
2026-06-22T01:34:20.4246970Z             },
2026-06-22T01:34:20.4247057Z             {
2026-06-22T01:34:20.4247168Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4247256Z               "line": 374
2026-06-22T01:34:20.4247346Z             },
2026-06-22T01:34:20.4247427Z             {
2026-06-22T01:34:20.4247541Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4247630Z               "line": 500
2026-06-22T01:34:20.4247710Z             },
2026-06-22T01:34:20.4247792Z             {
2026-06-22T01:34:20.4247911Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4247997Z               "line": 24
2026-06-22T01:34:20.4248074Z             },
2026-06-22T01:34:20.4248155Z             {
2026-06-22T01:34:20.4248259Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4248349Z               "line": 76
2026-06-22T01:34:20.4248427Z             },
2026-06-22T01:34:20.4248512Z             {
2026-06-22T01:34:20.4248621Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4248703Z               "line": 154
2026-06-22T01:34:20.4248794Z             },
2026-06-22T01:34:20.4248875Z             {
2026-06-22T01:34:20.4249042Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4249127Z               "line": 177
2026-06-22T01:34:20.4249199Z             },
2026-06-22T01:34:20.4249299Z             {
2026-06-22T01:34:20.4249428Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4249533Z               "line": 273
2026-06-22T01:34:20.4249614Z             },
2026-06-22T01:34:20.4249701Z             {
2026-06-22T01:34:20.4249818Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4249905Z               "line": 456
2026-06-22T01:34:20.4249996Z             },
2026-06-22T01:34:20.4250077Z             {
2026-06-22T01:34:20.4250195Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4250280Z               "line": 538
2026-06-22T01:34:20.4250366Z             },
2026-06-22T01:34:20.4250450Z             {
2026-06-22T01:34:20.4250568Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T01:34:20.4250655Z               "line": 27
2026-06-22T01:34:20.4250835Z             },
2026-06-22T01:34:20.4250926Z             {
2026-06-22T01:34:20.4251046Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T01:34:20.4251226Z               "line": 48
2026-06-22T01:34:20.4251304Z             },
2026-06-22T01:34:20.4251384Z             {
2026-06-22T01:34:20.4251503Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4251584Z               "line": 517
2026-06-22T01:34:20.4251666Z             },
2026-06-22T01:34:20.4251747Z             {
2026-06-22T01:34:20.4251856Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4251939Z               "line": 1921
2026-06-22T01:34:20.4252023Z             },
2026-06-22T01:34:20.4252104Z             {
2026-06-22T01:34:20.4252210Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4252295Z               "line": 6334
2026-06-22T01:34:20.4252375Z             },
2026-06-22T01:34:20.4252462Z             {
2026-06-22T01:34:20.4252563Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4252658Z               "line": 6395
2026-06-22T01:34:20.4252738Z             },
2026-06-22T01:34:20.4252823Z             {
2026-06-22T01:34:20.4252928Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4253021Z               "line": 6423
2026-06-22T01:34:20.4253106Z             },
2026-06-22T01:34:20.4253188Z             {
2026-06-22T01:34:20.4253284Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4253369Z               "line": 6477
2026-06-22T01:34:20.4253454Z             },
2026-06-22T01:34:20.4253541Z             {
2026-06-22T01:34:20.4253641Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4253731Z               "line": 6732
2026-06-22T01:34:20.4253817Z             },
2026-06-22T01:34:20.4253899Z             {
2026-06-22T01:34:20.4253989Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4254079Z               "line": 6792
2026-06-22T01:34:20.4254162Z             },
2026-06-22T01:34:20.4254247Z             {
2026-06-22T01:34:20.4254361Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.4254447Z               "line": 298
2026-06-22T01:34:20.4254543Z             },
2026-06-22T01:34:20.4254623Z             {
2026-06-22T01:34:20.4254728Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.4254824Z               "line": 339
2026-06-22T01:34:20.4254909Z             }
2026-06-22T01:34:20.4254991Z           ]
2026-06-22T01:34:20.4255077Z         },
2026-06-22T01:34:20.4255158Z         "int": {
2026-06-22T01:34:20.4255257Z           "complete": true,
2026-06-22T01:34:20.4255339Z           "evidence": [
2026-06-22T01:34:20.4255425Z             {
2026-06-22T01:34:20.4255553Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.4255637Z               "line": 706
2026-06-22T01:34:20.4255728Z             },
2026-06-22T01:34:20.4255805Z             {
2026-06-22T01:34:20.4255934Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4256024Z               "line": 778
2026-06-22T01:34:20.4256115Z             },
2026-06-22T01:34:20.4256201Z             {
2026-06-22T01:34:20.4256324Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4256416Z               "line": 1213
2026-06-22T01:34:20.4256496Z             },
2026-06-22T01:34:20.4256587Z             {
2026-06-22T01:34:20.4256716Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T01:34:20.4256802Z               "line": 18
2026-06-22T01:34:20.4256897Z             }
2026-06-22T01:34:20.4256982Z           ]
2026-06-22T01:34:20.4257064Z         },
2026-06-22T01:34:20.4257140Z         "unit": {
2026-06-22T01:34:20.4257244Z           "complete": true,
2026-06-22T01:34:20.4257331Z           "evidence": [
2026-06-22T01:34:20.4257422Z             {
2026-06-22T01:34:20.4257540Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4257627Z               "line": 744
2026-06-22T01:34:20.4257713Z             },
2026-06-22T01:34:20.4257883Z             {
2026-06-22T01:34:20.4258006Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:34:20.4258157Z               "line": 796
2026-06-22T01:34:20.4258242Z             },
2026-06-22T01:34:20.4258328Z             {
2026-06-22T01:34:20.4258444Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4258533Z               "line": 705
2026-06-22T01:34:20.4258610Z             },
2026-06-22T01:34:20.4258701Z             {
2026-06-22T01:34:20.4258815Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4258900Z               "line": 754
2026-06-22T01:34:20.4259053Z             },
2026-06-22T01:34:20.4259139Z             {
2026-06-22T01:34:20.4259249Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4259340Z               "line": 778
2026-06-22T01:34:20.4259426Z             },
2026-06-22T01:34:20.4259506Z             {
2026-06-22T01:34:20.4259631Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4259725Z               "line": 603
2026-06-22T01:34:20.4259811Z             },
2026-06-22T01:34:20.4259903Z             {
2026-06-22T01:34:20.4260017Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4260102Z               "line": 624
2026-06-22T01:34:20.4260179Z             },
2026-06-22T01:34:20.4260261Z             {
2026-06-22T01:34:20.4260383Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4260465Z               "line": 660
2026-06-22T01:34:20.4260552Z             },
2026-06-22T01:34:20.4260633Z             {
2026-06-22T01:34:20.4260755Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4260835Z               "line": 714
2026-06-22T01:34:20.4260921Z             },
2026-06-22T01:34:20.4261005Z             {
2026-06-22T01:34:20.4261119Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4261205Z               "line": 732
2026-06-22T01:34:20.4261296Z             },
2026-06-22T01:34:20.4261377Z             {
2026-06-22T01:34:20.4261496Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4261582Z               "line": 766
2026-06-22T01:34:20.4261668Z             },
2026-06-22T01:34:20.4261744Z             {
2026-06-22T01:34:20.4261869Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:34:20.4261949Z               "line": 841
2026-06-22T01:34:20.4262034Z             },
2026-06-22T01:34:20.4262121Z             {
2026-06-22T01:34:20.4262240Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T01:34:20.4262330Z               "line": 85
2026-06-22T01:34:20.4262411Z             },
2026-06-22T01:34:20.4262503Z             {
2026-06-22T01:34:20.4262607Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4262702Z               "line": 8044
2026-06-22T01:34:20.4262789Z             },
2026-06-22T01:34:20.4262875Z             {
2026-06-22T01:34:20.4262979Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4263070Z               "line": 9054
2026-06-22T01:34:20.4263147Z             },
2026-06-22T01:34:20.4263236Z             {
2026-06-22T01:34:20.4263340Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4263426Z               "line": 9124
2026-06-22T01:34:20.4263511Z             },
2026-06-22T01:34:20.4263595Z             {
2026-06-22T01:34:20.4263695Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4263791Z               "line": 9162
2026-06-22T01:34:20.4263873Z             }
2026-06-22T01:34:20.4263967Z           ]
2026-06-22T01:34:20.4264049Z         }
2026-06-22T01:34:20.4264135Z       }
2026-06-22T01:34:20.4264216Z     },
2026-06-22T01:34:20.4264296Z     {
2026-06-22T01:34:20.4264377Z       "id": "REQ-SHELL-3",
2026-06-22T01:34:20.4266188Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-22T01:34:20.4266503Z       "requiredStages": [
2026-06-22T01:34:20.4266598Z         "impl",
2026-06-22T01:34:20.4266680Z         "unit",
2026-06-22T01:34:20.4266756Z         "int"
2026-06-22T01:34:20.4266842Z       ],
2026-06-22T01:34:20.4266923Z       "stages": {
2026-06-22T01:34:20.4267009Z         "doc": {
2026-06-22T01:34:20.4267090Z           "complete": false,
2026-06-22T01:34:20.4267184Z           "evidence": []
2026-06-22T01:34:20.4267266Z         },
2026-06-22T01:34:20.4267357Z         "impl": {
2026-06-22T01:34:20.4267448Z           "complete": true,
2026-06-22T01:34:20.4267557Z           "evidence": [
2026-06-22T01:34:20.4267644Z             {
2026-06-22T01:34:20.4267757Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.4267867Z               "line": 229
2026-06-22T01:34:20.4267949Z             },
2026-06-22T01:34:20.4268043Z             {
2026-06-22T01:34:20.4268162Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4268250Z               "line": 36
2026-06-22T01:34:20.4268335Z             },
2026-06-22T01:34:20.4268409Z             {
2026-06-22T01:34:20.4268523Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4268614Z               "line": 137
2026-06-22T01:34:20.4268699Z             },
2026-06-22T01:34:20.4268784Z             {
2026-06-22T01:34:20.4268889Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4269051Z               "line": 153
2026-06-22T01:34:20.4269136Z             },
2026-06-22T01:34:20.4269227Z             {
2026-06-22T01:34:20.4269351Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4269436Z               "line": 165
2026-06-22T01:34:20.4269528Z             },
2026-06-22T01:34:20.4269609Z             {
2026-06-22T01:34:20.4269723Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4269804Z               "line": 242
2026-06-22T01:34:20.4269886Z             },
2026-06-22T01:34:20.4269966Z             {
2026-06-22T01:34:20.4270080Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4270177Z               "line": 267
2026-06-22T01:34:20.4270253Z             },
2026-06-22T01:34:20.4270334Z             {
2026-06-22T01:34:20.4270448Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4270530Z               "line": 293
2026-06-22T01:34:20.4270623Z             },
2026-06-22T01:34:20.4270700Z             {
2026-06-22T01:34:20.4270821Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:34:20.4270906Z               "line": 51
2026-06-22T01:34:20.4271001Z             },
2026-06-22T01:34:20.4271083Z             {
2026-06-22T01:34:20.4271212Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4271291Z               "line": 333
2026-06-22T01:34:20.4271371Z             },
2026-06-22T01:34:20.4271462Z             {
2026-06-22T01:34:20.4271575Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4271655Z               "line": 373
2026-06-22T01:34:20.4271732Z             },
2026-06-22T01:34:20.4271814Z             {
2026-06-22T01:34:20.4271937Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4272013Z               "line": 602
2026-06-22T01:34:20.4272100Z             },
2026-06-22T01:34:20.4272180Z             {
2026-06-22T01:34:20.4272289Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4272381Z               "line": 132
2026-06-22T01:34:20.4272462Z             },
2026-06-22T01:34:20.4272548Z             {
2026-06-22T01:34:20.4272768Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4272847Z               "line": 448
2026-06-22T01:34:20.4273025Z             },
2026-06-22T01:34:20.4273111Z             {
2026-06-22T01:34:20.4273224Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:34:20.4273320Z               "line": 74
2026-06-22T01:34:20.4273402Z             },
2026-06-22T01:34:20.4273491Z             {
2026-06-22T01:34:20.4273611Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4273693Z               "line": 605
2026-06-22T01:34:20.4273778Z             },
2026-06-22T01:34:20.4273862Z             {
2026-06-22T01:34:20.4273977Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4274067Z               "line": 396
2026-06-22T01:34:20.4274141Z             },
2026-06-22T01:34:20.4274217Z             {
2026-06-22T01:34:20.4274322Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4274419Z               "line": 6518
2026-06-22T01:34:20.4274499Z             }
2026-06-22T01:34:20.4274579Z           ]
2026-06-22T01:34:20.4274672Z         },
2026-06-22T01:34:20.4274752Z         "int": {
2026-06-22T01:34:20.4274851Z           "complete": true,
2026-06-22T01:34:20.4274938Z           "evidence": [
2026-06-22T01:34:20.4275019Z             {
2026-06-22T01:34:20.4275138Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4275223Z               "line": 1262
2026-06-22T01:34:20.4275311Z             },
2026-06-22T01:34:20.4275390Z             {
2026-06-22T01:34:20.4275500Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-22T01:34:20.4275586Z               "line": 17
2026-06-22T01:34:20.4275667Z             }
2026-06-22T01:34:20.4275744Z           ]
2026-06-22T01:34:20.4275834Z         },
2026-06-22T01:34:20.4275921Z         "unit": {
2026-06-22T01:34:20.4276015Z           "complete": true,
2026-06-22T01:34:20.4276111Z           "evidence": [
2026-06-22T01:34:20.4276187Z             {
2026-06-22T01:34:20.4276311Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4276406Z               "line": 311
2026-06-22T01:34:20.4276497Z             },
2026-06-22T01:34:20.4276584Z             {
2026-06-22T01:34:20.4276692Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4276777Z               "line": 325
2026-06-22T01:34:20.4276862Z             },
2026-06-22T01:34:20.4276950Z             {
2026-06-22T01:34:20.4277068Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4280264Z               "line": 343
2026-06-22T01:34:20.4280350Z             },
2026-06-22T01:34:20.4280432Z             {
2026-06-22T01:34:20.4280560Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4280645Z               "line": 364
2026-06-22T01:34:20.4280728Z             },
2026-06-22T01:34:20.4280817Z             {
2026-06-22T01:34:20.4280931Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:34:20.4281033Z               "line": 376
2026-06-22T01:34:20.4281118Z             },
2026-06-22T01:34:20.4281203Z             {
2026-06-22T01:34:20.4281314Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4281395Z               "line": 897
2026-06-22T01:34:20.4281485Z             },
2026-06-22T01:34:20.4281566Z             {
2026-06-22T01:34:20.4281691Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4281776Z               "line": 957
2026-06-22T01:34:20.4281855Z             },
2026-06-22T01:34:20.4281932Z             {
2026-06-22T01:34:20.4282061Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:34:20.4282149Z               "line": 338
2026-06-22T01:34:20.4282234Z             },
2026-06-22T01:34:20.4282321Z             {
2026-06-22T01:34:20.4282426Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.4282515Z               "line": 769
2026-06-22T01:34:20.4282587Z             },
2026-06-22T01:34:20.4282812Z             {
2026-06-22T01:34:20.4282926Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4283089Z               "line": 8836
2026-06-22T01:34:20.4283178Z             }
2026-06-22T01:34:20.4283260Z           ]
2026-06-22T01:34:20.4283342Z         }
2026-06-22T01:34:20.4283427Z       }
2026-06-22T01:34:20.4283512Z     },
2026-06-22T01:34:20.4283595Z     {
2026-06-22T01:34:20.4283680Z       "id": "REQ-SHELL-4",
2026-06-22T01:34:20.4285498Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-22T01:34:20.4285607Z       "requiredStages": [
2026-06-22T01:34:20.4285702Z         "doc",
2026-06-22T01:34:20.4285779Z         "impl",
2026-06-22T01:34:20.4285861Z         "unit",
2026-06-22T01:34:20.4285950Z         "int"
2026-06-22T01:34:20.4286031Z       ],
2026-06-22T01:34:20.4286122Z       "stages": {
2026-06-22T01:34:20.4286209Z         "doc": {
2026-06-22T01:34:20.4286289Z           "complete": true,
2026-06-22T01:34:20.4286375Z           "evidence": [
2026-06-22T01:34:20.4286457Z             {
2026-06-22T01:34:20.4286557Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4286647Z               "line": 281
2026-06-22T01:34:20.4286728Z             },
2026-06-22T01:34:20.4286815Z             {
2026-06-22T01:34:20.4287043Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T01:34:20.4287135Z               "line": 88
2026-06-22T01:34:20.4287219Z             }
2026-06-22T01:34:20.4287309Z           ]
2026-06-22T01:34:20.4287394Z         },
2026-06-22T01:34:20.4287471Z         "impl": {
2026-06-22T01:34:20.4287562Z           "complete": true,
2026-06-22T01:34:20.4287647Z           "evidence": [
2026-06-22T01:34:20.4287718Z             {
2026-06-22T01:34:20.4287839Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.4287924Z               "line": 243
2026-06-22T01:34:20.4288004Z             },
2026-06-22T01:34:20.4288087Z             {
2026-06-22T01:34:20.4288210Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:34:20.4288300Z               "line": 61
2026-06-22T01:34:20.4288377Z             },
2026-06-22T01:34:20.4288458Z             {
2026-06-22T01:34:20.4288577Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4288653Z               "line": 218
2026-06-22T01:34:20.4288735Z             },
2026-06-22T01:34:20.4288816Z             {
2026-06-22T01:34:20.4288925Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4289107Z               "line": 245
2026-06-22T01:34:20.4289177Z             },
2026-06-22T01:34:20.4289278Z             {
2026-06-22T01:34:20.4289384Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4289492Z               "line": 616
2026-06-22T01:34:20.4289577Z             },
2026-06-22T01:34:20.4289663Z             {
2026-06-22T01:34:20.4289781Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4289857Z               "line": 1191
2026-06-22T01:34:20.4289932Z             },
2026-06-22T01:34:20.4290014Z             {
2026-06-22T01:34:20.4290124Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4290204Z               "line": 1203
2026-06-22T01:34:20.4290285Z             },
2026-06-22T01:34:20.4290372Z             {
2026-06-22T01:34:20.4290476Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4290561Z               "line": 1244
2026-06-22T01:34:20.4290762Z             },
2026-06-22T01:34:20.4290843Z             {
2026-06-22T01:34:20.4290959Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4291129Z               "line": 456
2026-06-22T01:34:20.4291205Z             },
2026-06-22T01:34:20.4291288Z             {
2026-06-22T01:34:20.4291401Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4291487Z               "line": 44
2026-06-22T01:34:20.4291568Z             },
2026-06-22T01:34:20.4291650Z             {
2026-06-22T01:34:20.4291763Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4291849Z               "line": 208
2026-06-22T01:34:20.4291932Z             },
2026-06-22T01:34:20.4292017Z             {
2026-06-22T01:34:20.4292131Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4292213Z               "line": 227
2026-06-22T01:34:20.4292299Z             },
2026-06-22T01:34:20.4292383Z             {
2026-06-22T01:34:20.4292501Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4292583Z               "line": 253
2026-06-22T01:34:20.4292672Z             },
2026-06-22T01:34:20.4292756Z             {
2026-06-22T01:34:20.4292871Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4292953Z               "line": 272
2026-06-22T01:34:20.4293038Z             },
2026-06-22T01:34:20.4293119Z             {
2026-06-22T01:34:20.4293234Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4293325Z               "line": 392
2026-06-22T01:34:20.4293409Z             },
2026-06-22T01:34:20.4293481Z             {
2026-06-22T01:34:20.4293597Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4293682Z               "line": 421
2026-06-22T01:34:20.4293767Z             },
2026-06-22T01:34:20.4293849Z             {
2026-06-22T01:34:20.4293958Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4294039Z               "line": 439
2026-06-22T01:34:20.4294125Z             },
2026-06-22T01:34:20.4294212Z             {
2026-06-22T01:34:20.4294330Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4294416Z               "line": 458
2026-06-22T01:34:20.4294493Z             },
2026-06-22T01:34:20.4294579Z             {
2026-06-22T01:34:20.4294692Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4294775Z               "line": 486
2026-06-22T01:34:20.4294851Z             },
2026-06-22T01:34:20.4294931Z             {
2026-06-22T01:34:20.4295044Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4295135Z               "line": 624
2026-06-22T01:34:20.4295216Z             },
2026-06-22T01:34:20.4295299Z             {
2026-06-22T01:34:20.4295409Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4295501Z               "line": 829
2026-06-22T01:34:20.4295582Z             },
2026-06-22T01:34:20.4295666Z             {
2026-06-22T01:34:20.4295787Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4295872Z               "line": 435
2026-06-22T01:34:20.4295957Z             },
2026-06-22T01:34:20.4296038Z             {
2026-06-22T01:34:20.4296144Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4296235Z               "line": 6574
2026-06-22T01:34:20.4296320Z             }
2026-06-22T01:34:20.4296411Z           ]
2026-06-22T01:34:20.4296487Z         },
2026-06-22T01:34:20.4296578Z         "int": {
2026-06-22T01:34:20.4296668Z           "complete": true,
2026-06-22T01:34:20.4296765Z           "evidence": [
2026-06-22T01:34:20.4296844Z             {
2026-06-22T01:34:20.4296954Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-22T01:34:20.4297046Z               "line": 18
2026-06-22T01:34:20.4297126Z             }
2026-06-22T01:34:20.4297212Z           ]
2026-06-22T01:34:20.4297293Z         },
2026-06-22T01:34:20.4297380Z         "unit": {
2026-06-22T01:34:20.4297465Z           "complete": true,
2026-06-22T01:34:20.4297637Z           "evidence": [
2026-06-22T01:34:20.4297728Z             {
2026-06-22T01:34:20.4297912Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4297997Z               "line": 1479
2026-06-22T01:34:20.4298079Z             },
2026-06-22T01:34:20.4298159Z             {
2026-06-22T01:34:20.4298274Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4298365Z               "line": 1508
2026-06-22T01:34:20.4298447Z             },
2026-06-22T01:34:20.4298531Z             {
2026-06-22T01:34:20.4298647Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4298732Z               "line": 504
2026-06-22T01:34:20.4298813Z             },
2026-06-22T01:34:20.4298893Z             {
2026-06-22T01:34:20.4299094Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4299180Z               "line": 514
2026-06-22T01:34:20.4299266Z             },
2026-06-22T01:34:20.4299357Z             {
2026-06-22T01:34:20.4299466Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4299562Z               "line": 531
2026-06-22T01:34:20.4299644Z             },
2026-06-22T01:34:20.4299733Z             {
2026-06-22T01:34:20.4299848Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4299925Z               "line": 543
2026-06-22T01:34:20.4300010Z             },
2026-06-22T01:34:20.4300086Z             {
2026-06-22T01:34:20.4300189Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:34:20.4300276Z               "line": 555
2026-06-22T01:34:20.4300360Z             },
2026-06-22T01:34:20.4300445Z             {
2026-06-22T01:34:20.4300555Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4300646Z               "line": 1145
2026-06-22T01:34:20.4300717Z             },
2026-06-22T01:34:20.4300802Z             {
2026-06-22T01:34:20.4300913Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.4301008Z               "line": 776
2026-06-22T01:34:20.4301093Z             }
2026-06-22T01:34:20.4301175Z           ]
2026-06-22T01:34:20.4301261Z         }
2026-06-22T01:34:20.4301332Z       }
2026-06-22T01:34:20.4301418Z     },
2026-06-22T01:34:20.4301499Z     {
2026-06-22T01:34:20.4301580Z       "id": "REQ-SHELL-5",
2026-06-22T01:34:20.4302782Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-22T01:34:20.4302864Z       "requiredStages": [
2026-06-22T01:34:20.4302948Z         "doc",
2026-06-22T01:34:20.4303037Z         "impl",
2026-06-22T01:34:20.4303119Z         "unit",
2026-06-22T01:34:20.4303204Z         "int"
2026-06-22T01:34:20.4303293Z       ],
2026-06-22T01:34:20.4303383Z       "stages": {
2026-06-22T01:34:20.4303451Z         "doc": {
2026-06-22T01:34:20.4303551Z           "complete": true,
2026-06-22T01:34:20.4303636Z           "evidence": [
2026-06-22T01:34:20.4303717Z             {
2026-06-22T01:34:20.4303823Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4303899Z               "line": 284
2026-06-22T01:34:20.4303988Z             }
2026-06-22T01:34:20.4304066Z           ]
2026-06-22T01:34:20.4304152Z         },
2026-06-22T01:34:20.4304238Z         "impl": {
2026-06-22T01:34:20.4304313Z           "complete": true,
2026-06-22T01:34:20.4304395Z           "evidence": [
2026-06-22T01:34:20.4304467Z             {
2026-06-22T01:34:20.4304590Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:34:20.4304676Z               "line": 260
2026-06-22T01:34:20.4304767Z             }
2026-06-22T01:34:20.4304857Z           ]
2026-06-22T01:34:20.4304933Z         },
2026-06-22T01:34:20.4305020Z         "int": {
2026-06-22T01:34:20.4305214Z           "complete": true,
2026-06-22T01:34:20.4305306Z           "evidence": [
2026-06-22T01:34:20.4305487Z             {
2026-06-22T01:34:20.4305609Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4305695Z               "line": 827
2026-06-22T01:34:20.4305780Z             },
2026-06-22T01:34:20.4305864Z             {
2026-06-22T01:34:20.4305979Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4306075Z               "line": 1290
2026-06-22T01:34:20.4306156Z             },
2026-06-22T01:34:20.4306246Z             {
2026-06-22T01:34:20.4306390Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-22T01:34:20.4306476Z               "line": 23
2026-06-22T01:34:20.4306560Z             }
2026-06-22T01:34:20.4306638Z           ]
2026-06-22T01:34:20.4306714Z         },
2026-06-22T01:34:20.4306800Z         "unit": {
2026-06-22T01:34:20.4306884Z           "complete": true,
2026-06-22T01:34:20.4306976Z           "evidence": [
2026-06-22T01:34:20.4307057Z             {
2026-06-22T01:34:20.4307175Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:34:20.4307272Z               "line": 803
2026-06-22T01:34:20.4307353Z             }
2026-06-22T01:34:20.4307424Z           ]
2026-06-22T01:34:20.4307509Z         }
2026-06-22T01:34:20.4307592Z       }
2026-06-22T01:34:20.4307673Z     },
2026-06-22T01:34:20.4307757Z     {
2026-06-22T01:34:20.4307839Z       "id": "REQ-START-1",
2026-06-22T01:34:20.4308030Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-22T01:34:20.4308115Z       "requiredStages": [
2026-06-22T01:34:20.4308192Z         "impl",
2026-06-22T01:34:20.4308274Z         "unit"
2026-06-22T01:34:20.4308359Z       ],
2026-06-22T01:34:20.4308443Z       "stages": {
2026-06-22T01:34:20.4308514Z         "doc": {
2026-06-22T01:34:20.4308611Z           "complete": false,
2026-06-22T01:34:20.4308692Z           "evidence": []
2026-06-22T01:34:20.4308781Z         },
2026-06-22T01:34:20.4308868Z         "impl": {
2026-06-22T01:34:20.4309287Z           "complete": true,
2026-06-22T01:34:20.4309483Z           "evidence": [
2026-06-22T01:34:20.4309574Z             {
2026-06-22T01:34:20.4309697Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T01:34:20.4309783Z               "line": 16
2026-06-22T01:34:20.4309865Z             }
2026-06-22T01:34:20.4309954Z           ]
2026-06-22T01:34:20.4310031Z         },
2026-06-22T01:34:20.4310117Z         "int": {
2026-06-22T01:34:20.4310204Z           "complete": false,
2026-06-22T01:34:20.4310297Z           "evidence": []
2026-06-22T01:34:20.4310369Z         },
2026-06-22T01:34:20.4310456Z         "unit": {
2026-06-22T01:34:20.4310538Z           "complete": true,
2026-06-22T01:34:20.4310641Z           "evidence": [
2026-06-22T01:34:20.4310726Z             {
2026-06-22T01:34:20.4310841Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T01:34:20.4310929Z               "line": 48
2026-06-22T01:34:20.4311010Z             },
2026-06-22T01:34:20.4311091Z             {
2026-06-22T01:34:20.4311201Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T01:34:20.4311291Z               "line": 63
2026-06-22T01:34:20.4311376Z             }
2026-06-22T01:34:20.4311458Z           ]
2026-06-22T01:34:20.4311544Z         }
2026-06-22T01:34:20.4311620Z       }
2026-06-22T01:34:20.4311705Z     },
2026-06-22T01:34:20.4311788Z     {
2026-06-22T01:34:20.4311883Z       "id": "REQ-START-2",
2026-06-22T01:34:20.4312035Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-22T01:34:20.4312131Z       "requiredStages": [
2026-06-22T01:34:20.4312221Z         "impl",
2026-06-22T01:34:20.4312302Z         "unit",
2026-06-22T01:34:20.4312384Z         "int"
2026-06-22T01:34:20.4312465Z       ],
2026-06-22T01:34:20.4312555Z       "stages": {
2026-06-22T01:34:20.4312641Z         "doc": {
2026-06-22T01:34:20.4312728Z           "complete": false,
2026-06-22T01:34:20.4312812Z           "evidence": []
2026-06-22T01:34:20.4313076Z         },
2026-06-22T01:34:20.4313174Z         "impl": {
2026-06-22T01:34:20.4313270Z           "complete": true,
2026-06-22T01:34:20.4313452Z           "evidence": [
2026-06-22T01:34:20.4313536Z             {
2026-06-22T01:34:20.4313655Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4313750Z               "line": 16
2026-06-22T01:34:20.4313829Z             },
2026-06-22T01:34:20.4313914Z             {
2026-06-22T01:34:20.4314025Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4314121Z               "line": 115
2026-06-22T01:34:20.4314201Z             },
2026-06-22T01:34:20.4314282Z             {
2026-06-22T01:34:20.4314388Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4314473Z               "line": 300
2026-06-22T01:34:20.4314549Z             }
2026-06-22T01:34:20.4314631Z           ]
2026-06-22T01:34:20.4314717Z         },
2026-06-22T01:34:20.4314793Z         "int": {
2026-06-22T01:34:20.4314892Z           "complete": true,
2026-06-22T01:34:20.4314980Z           "evidence": [
2026-06-22T01:34:20.4315064Z             {
2026-06-22T01:34:20.4315183Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.4315275Z               "line": 186
2026-06-22T01:34:20.4315361Z             }
2026-06-22T01:34:20.4315441Z           ]
2026-06-22T01:34:20.4315527Z         },
2026-06-22T01:34:20.4315614Z         "unit": {
2026-06-22T01:34:20.4315699Z           "complete": true,
2026-06-22T01:34:20.4315789Z           "evidence": [
2026-06-22T01:34:20.4315876Z             {
2026-06-22T01:34:20.4315985Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4316080Z               "line": 590
2026-06-22T01:34:20.4316164Z             },
2026-06-22T01:34:20.4316251Z             {
2026-06-22T01:34:20.4316359Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4316448Z               "line": 623
2026-06-22T01:34:20.4316534Z             }
2026-06-22T01:34:20.4316654Z           ]
2026-06-22T01:34:20.4316758Z         }
2026-06-22T01:34:20.4316844Z       }
2026-06-22T01:34:20.4316936Z     },
2026-06-22T01:34:20.4317012Z     {
2026-06-22T01:34:20.4317101Z       "id": "REQ-START-3",
2026-06-22T01:34:20.4317264Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-22T01:34:20.4317360Z       "requiredStages": [
2026-06-22T01:34:20.4317440Z         "impl",
2026-06-22T01:34:20.4317527Z         "unit",
2026-06-22T01:34:20.4317613Z         "int"
2026-06-22T01:34:20.4317694Z       ],
2026-06-22T01:34:20.4317779Z       "stages": {
2026-06-22T01:34:20.4317866Z         "doc": {
2026-06-22T01:34:20.4317951Z           "complete": false,
2026-06-22T01:34:20.4318055Z           "evidence": []
2026-06-22T01:34:20.4318127Z         },
2026-06-22T01:34:20.4318219Z         "impl": {
2026-06-22T01:34:20.4318298Z           "complete": true,
2026-06-22T01:34:20.4318394Z           "evidence": [
2026-06-22T01:34:20.4318477Z             {
2026-06-22T01:34:20.4318608Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.4318690Z               "line": 23
2026-06-22T01:34:20.4318786Z             },
2026-06-22T01:34:20.4318872Z             {
2026-06-22T01:34:20.4319084Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.4319185Z               "line": 205
2026-06-22T01:34:20.4319271Z             },
2026-06-22T01:34:20.4319361Z             {
2026-06-22T01:34:20.4319466Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.4319547Z               "line": 221
2026-06-22T01:34:20.4319637Z             },
2026-06-22T01:34:20.4319718Z             {
2026-06-22T01:34:20.4319824Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4319919Z               "line": 17
2026-06-22T01:34:20.4320004Z             },
2026-06-22T01:34:20.4320082Z             {
2026-06-22T01:34:20.4320191Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4320276Z               "line": 35
2026-06-22T01:34:20.4320473Z             },
2026-06-22T01:34:20.4320553Z             {
2026-06-22T01:34:20.4320672Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4320853Z               "line": 116
2026-06-22T01:34:20.4320944Z             }
2026-06-22T01:34:20.4321031Z           ]
2026-06-22T01:34:20.4321112Z         },
2026-06-22T01:34:20.4321196Z         "int": {
2026-06-22T01:34:20.4321286Z           "complete": true,
2026-06-22T01:34:20.4321377Z           "evidence": [
2026-06-22T01:34:20.4321453Z             {
2026-06-22T01:34:20.4321561Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:34:20.4321646Z               "line": 488
2026-06-22T01:34:20.4321737Z             }
2026-06-22T01:34:20.4321818Z           ]
2026-06-22T01:34:20.4321904Z         },
2026-06-22T01:34:20.4321990Z         "unit": {
2026-06-22T01:34:20.4322076Z           "complete": true,
2026-06-22T01:34:20.4322161Z           "evidence": [
2026-06-22T01:34:20.4322247Z             {
2026-06-22T01:34:20.4322372Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.4322453Z               "line": 381
2026-06-22T01:34:20.4322557Z             },
2026-06-22T01:34:20.4322634Z             {
2026-06-22T01:34:20.4322743Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.4322838Z               "line": 402
2026-06-22T01:34:20.4322919Z             },
2026-06-22T01:34:20.4323002Z             {
2026-06-22T01:34:20.4323115Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:34:20.4323201Z               "line": 412
2026-06-22T01:34:20.4323278Z             },
2026-06-22T01:34:20.4323363Z             {
2026-06-22T01:34:20.4323482Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4323564Z               "line": 591
2026-06-22T01:34:20.4323650Z             },
2026-06-22T01:34:20.4323729Z             {
2026-06-22T01:34:20.4323840Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4323922Z               "line": 624
2026-06-22T01:34:20.4324012Z             },
2026-06-22T01:34:20.4324096Z             {
2026-06-22T01:34:20.4324211Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4324296Z               "line": 657
2026-06-22T01:34:20.4324375Z             }
2026-06-22T01:34:20.4324451Z           ]
2026-06-22T01:34:20.4324537Z         }
2026-06-22T01:34:20.4324624Z       }
2026-06-22T01:34:20.4324704Z     },
2026-06-22T01:34:20.4324785Z     {
2026-06-22T01:34:20.4324886Z       "id": "REQ-START-4",
2026-06-22T01:34:20.4325024Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-22T01:34:20.4325123Z       "requiredStages": [
2026-06-22T01:34:20.4325211Z         "impl",
2026-06-22T01:34:20.4325296Z         "unit"
2026-06-22T01:34:20.4325381Z       ],
2026-06-22T01:34:20.4325467Z       "stages": {
2026-06-22T01:34:20.4325554Z         "doc": {
2026-06-22T01:34:20.4325639Z           "complete": false,
2026-06-22T01:34:20.4325734Z           "evidence": []
2026-06-22T01:34:20.4325830Z         },
2026-06-22T01:34:20.4325916Z         "impl": {
2026-06-22T01:34:20.4326010Z           "complete": true,
2026-06-22T01:34:20.4326106Z           "evidence": [
2026-06-22T01:34:20.4326193Z             {
2026-06-22T01:34:20.4326311Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4326402Z               "line": 585
2026-06-22T01:34:20.4326484Z             }
2026-06-22T01:34:20.4326565Z           ]
2026-06-22T01:34:20.4326645Z         },
2026-06-22T01:34:20.4326724Z         "int": {
2026-06-22T01:34:20.4326825Z           "complete": false,
2026-06-22T01:34:20.4326910Z           "evidence": []
2026-06-22T01:34:20.4326994Z         },
2026-06-22T01:34:20.4327080Z         "unit": {
2026-06-22T01:34:20.4327166Z           "complete": true,
2026-06-22T01:34:20.4327248Z           "evidence": [
2026-06-22T01:34:20.4327333Z             {
2026-06-22T01:34:20.4327453Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4327534Z               "line": 1026
2026-06-22T01:34:20.4327705Z             }
2026-06-22T01:34:20.4327791Z           ]
2026-06-22T01:34:20.4327877Z         }
2026-06-22T01:34:20.4328024Z       }
2026-06-22T01:34:20.4328106Z     },
2026-06-22T01:34:20.4328191Z     {
2026-06-22T01:34:20.4328277Z       "id": "REQ-START-5",
2026-06-22T01:34:20.4331199Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-22T01:34:20.4331334Z       "requiredStages": [
2026-06-22T01:34:20.4331422Z         "doc",
2026-06-22T01:34:20.4331508Z         "impl",
2026-06-22T01:34:20.4331596Z         "unit",
2026-06-22T01:34:20.4331677Z         "int"
2026-06-22T01:34:20.4331761Z       ],
2026-06-22T01:34:20.4331846Z       "stages": {
2026-06-22T01:34:20.4331937Z         "doc": {
2026-06-22T01:34:20.4332036Z           "complete": true,
2026-06-22T01:34:20.4332121Z           "evidence": [
2026-06-22T01:34:20.4332211Z             {
2026-06-22T01:34:20.4332307Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4332397Z               "line": 176
2026-06-22T01:34:20.4332483Z             },
2026-06-22T01:34:20.4332569Z             {
2026-06-22T01:34:20.4332708Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-22T01:34:20.4332812Z               "line": 28
2026-06-22T01:34:20.4332918Z             }
2026-06-22T01:34:20.4333003Z           ]
2026-06-22T01:34:20.4333088Z         },
2026-06-22T01:34:20.4333165Z         "impl": {
2026-06-22T01:34:20.4333266Z           "complete": true,
2026-06-22T01:34:20.4333361Z           "evidence": [
2026-06-22T01:34:20.4333436Z             {
2026-06-22T01:34:20.4333566Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.4333646Z               "line": 26
2026-06-22T01:34:20.4333732Z             },
2026-06-22T01:34:20.4333809Z             {
2026-06-22T01:34:20.4333924Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.4334009Z               "line": 212
2026-06-22T01:34:20.4334095Z             },
2026-06-22T01:34:20.4334177Z             {
2026-06-22T01:34:20.4334290Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.4334381Z               "line": 221
2026-06-22T01:34:20.4334468Z             },
2026-06-22T01:34:20.4334554Z             {
2026-06-22T01:34:20.4334671Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.4334751Z               "line": 485
2026-06-22T01:34:20.4334838Z             },
2026-06-22T01:34:20.4334913Z             {
2026-06-22T01:34:20.4335021Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4335102Z               "line": 36
2026-06-22T01:34:20.4335189Z             },
2026-06-22T01:34:20.4335278Z             {
2026-06-22T01:34:20.4335383Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4335480Z               "line": 118
2026-06-22T01:34:20.4335561Z             },
2026-06-22T01:34:20.4335645Z             {
2026-06-22T01:34:20.4335751Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:34:20.4335841Z               "line": 329
2026-06-22T01:34:20.4335927Z             }
2026-06-22T01:34:20.4336008Z           ]
2026-06-22T01:34:20.4336237Z         },
2026-06-22T01:34:20.4336313Z         "int": {
2026-06-22T01:34:20.4336410Z           "complete": true,
2026-06-22T01:34:20.4336604Z           "evidence": [
2026-06-22T01:34:20.4336696Z             {
2026-06-22T01:34:20.4336828Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T01:34:20.4336914Z               "line": 17
2026-06-22T01:34:20.4337001Z             }
2026-06-22T01:34:20.4337083Z           ]
2026-06-22T01:34:20.4337171Z         },
2026-06-22T01:34:20.4337256Z         "unit": {
2026-06-22T01:34:20.4337351Z           "complete": true,
2026-06-22T01:34:20.4337437Z           "evidence": [
2026-06-22T01:34:20.4337521Z             {
2026-06-22T01:34:20.4337640Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.4337722Z               "line": 358
2026-06-22T01:34:20.4337808Z             },
2026-06-22T01:34:20.4337898Z             {
2026-06-22T01:34:20.4338003Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:34:20.4338103Z               "line": 371
2026-06-22T01:34:20.4338184Z             },
2026-06-22T01:34:20.4338269Z             {
2026-06-22T01:34:20.4338380Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:34:20.4338465Z               "line": 597
2026-06-22T01:34:20.4338546Z             }
2026-06-22T01:34:20.4338628Z           ]
2026-06-22T01:34:20.4338713Z         }
2026-06-22T01:34:20.4338780Z       }
2026-06-22T01:34:20.4338866Z     },
2026-06-22T01:34:20.4339047Z     {
2026-06-22T01:34:20.4339147Z       "id": "REQ-STORE-1",
2026-06-22T01:34:20.4339992Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-22T01:34:20.4340081Z       "requiredStages": [
2026-06-22T01:34:20.4340171Z         "impl",
2026-06-22T01:34:20.4340253Z         "unit"
2026-06-22T01:34:20.4340339Z       ],
2026-06-22T01:34:20.4340424Z       "stages": {
2026-06-22T01:34:20.4340515Z         "doc": {
2026-06-22T01:34:20.4340601Z           "complete": false,
2026-06-22T01:34:20.4340687Z           "evidence": []
2026-06-22T01:34:20.4340772Z         },
2026-06-22T01:34:20.4340858Z         "impl": {
2026-06-22T01:34:20.4340954Z           "complete": true,
2026-06-22T01:34:20.4341044Z           "evidence": [
2026-06-22T01:34:20.4341124Z             {
2026-06-22T01:34:20.4341254Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4341334Z               "line": 23
2026-06-22T01:34:20.4341416Z             },
2026-06-22T01:34:20.4341497Z             {
2026-06-22T01:34:20.4341617Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4341707Z               "line": 46
2026-06-22T01:34:20.4341783Z             },
2026-06-22T01:34:20.4341860Z             {
2026-06-22T01:34:20.4341978Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4342073Z               "line": 97
2026-06-22T01:34:20.4342146Z             },
2026-06-22T01:34:20.4342232Z             {
2026-06-22T01:34:20.4342354Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4342444Z               "line": 125
2026-06-22T01:34:20.4342530Z             },
2026-06-22T01:34:20.4342601Z             {
2026-06-22T01:34:20.4342723Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4342814Z               "line": 207
2026-06-22T01:34:20.4342906Z             },
2026-06-22T01:34:20.4342990Z             {
2026-06-22T01:34:20.4343110Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4343196Z               "line": 231
2026-06-22T01:34:20.4343282Z             },
2026-06-22T01:34:20.4343367Z             {
2026-06-22T01:34:20.4343473Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4343563Z               "line": 467
2026-06-22T01:34:20.4343759Z             },
2026-06-22T01:34:20.4343845Z             {
2026-06-22T01:34:20.4343972Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.4344150Z               "line": 25
2026-06-22T01:34:20.4344236Z             },
2026-06-22T01:34:20.4344321Z             {
2026-06-22T01:34:20.4344441Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.4344530Z               "line": 120
2026-06-22T01:34:20.4344611Z             },
2026-06-22T01:34:20.4344699Z             {
2026-06-22T01:34:20.4344808Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.4344898Z               "line": 148
2026-06-22T01:34:20.4344975Z             },
2026-06-22T01:34:20.4345057Z             {
2026-06-22T01:34:20.4345183Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.4345260Z               "line": 165
2026-06-22T01:34:20.4345345Z             },
2026-06-22T01:34:20.4345431Z             {
2026-06-22T01:34:20.4345557Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.4345648Z               "line": 180
2026-06-22T01:34:20.4345744Z             },
2026-06-22T01:34:20.4345834Z             {
2026-06-22T01:34:20.4345948Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.4346045Z               "line": 198
2026-06-22T01:34:20.4346126Z             },
2026-06-22T01:34:20.4346210Z             {
2026-06-22T01:34:20.4346331Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.4346421Z               "line": 207
2026-06-22T01:34:20.4346511Z             },
2026-06-22T01:34:20.4346587Z             {
2026-06-22T01:34:20.4346698Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T01:34:20.4346788Z               "line": 16
2026-06-22T01:34:20.4346873Z             },
2026-06-22T01:34:20.4346960Z             {
2026-06-22T01:34:20.4347064Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T01:34:20.4347145Z               "line": 63
2026-06-22T01:34:20.4347231Z             }
2026-06-22T01:34:20.4347328Z           ]
2026-06-22T01:34:20.4347412Z         },
2026-06-22T01:34:20.4347498Z         "int": {
2026-06-22T01:34:20.4347590Z           "complete": false,
2026-06-22T01:34:20.4347675Z           "evidence": []
2026-06-22T01:34:20.4347765Z         },
2026-06-22T01:34:20.4347840Z         "unit": {
2026-06-22T01:34:20.4347931Z           "complete": true,
2026-06-22T01:34:20.4348020Z           "evidence": [
2026-06-22T01:34:20.4348105Z             {
2026-06-22T01:34:20.4351166Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4351294Z               "line": 584
2026-06-22T01:34:20.4351384Z             },
2026-06-22T01:34:20.4351471Z             {
2026-06-22T01:34:20.4351614Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4351694Z               "line": 594
2026-06-22T01:34:20.4351786Z             },
2026-06-22T01:34:20.4351872Z             {
2026-06-22T01:34:20.4352014Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4352101Z               "line": 616
2026-06-22T01:34:20.4352186Z             },
2026-06-22T01:34:20.4352267Z             {
2026-06-22T01:34:20.4352387Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4352472Z               "line": 632
2026-06-22T01:34:20.4352557Z             },
2026-06-22T01:34:20.4352634Z             {
2026-06-22T01:34:20.4352759Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:34:20.4352848Z               "line": 690
2026-06-22T01:34:20.4352928Z             },
2026-06-22T01:34:20.4353014Z             {
2026-06-22T01:34:20.4353138Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.4353227Z               "line": 472
2026-06-22T01:34:20.4353312Z             },
2026-06-22T01:34:20.4353389Z             {
2026-06-22T01:34:20.4353518Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:34:20.4353743Z               "line": 507
2026-06-22T01:34:20.4353823Z             },
2026-06-22T01:34:20.4353903Z             {
2026-06-22T01:34:20.4354123Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T01:34:20.4354209Z               "line": 120
2026-06-22T01:34:20.4354295Z             },
2026-06-22T01:34:20.4354377Z             {
2026-06-22T01:34:20.4354500Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T01:34:20.4354591Z               "line": 128
2026-06-22T01:34:20.4354672Z             }
2026-06-22T01:34:20.4354757Z           ]
2026-06-22T01:34:20.4354843Z         }
2026-06-22T01:34:20.4354924Z       }
2026-06-22T01:34:20.4355011Z     },
2026-06-22T01:34:20.4355100Z     {
2026-06-22T01:34:20.4355200Z       "id": "REQ-SUBNET-1",
2026-06-22T01:34:20.4355525Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-22T01:34:20.4355621Z       "requiredStages": [
2026-06-22T01:34:20.4355707Z         "impl",
2026-06-22T01:34:20.4355791Z         "unit"
2026-06-22T01:34:20.4355876Z       ],
2026-06-22T01:34:20.4355967Z       "stages": {
2026-06-22T01:34:20.4356056Z         "doc": {
2026-06-22T01:34:20.4356146Z           "complete": false,
2026-06-22T01:34:20.4356228Z           "evidence": []
2026-06-22T01:34:20.4356309Z         },
2026-06-22T01:34:20.4356395Z         "impl": {
2026-06-22T01:34:20.4356484Z           "complete": true,
2026-06-22T01:34:20.4356566Z           "evidence": [
2026-06-22T01:34:20.4356647Z             {
2026-06-22T01:34:20.4356775Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4356867Z               "line": 281
2026-06-22T01:34:20.4356953Z             },
2026-06-22T01:34:20.4357039Z             {
2026-06-22T01:34:20.4357162Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4357258Z               "line": 651
2026-06-22T01:34:20.4357343Z             },
2026-06-22T01:34:20.4357419Z             {
2026-06-22T01:34:20.4357530Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4357615Z               "line": 3399
2026-06-22T01:34:20.4357701Z             },
2026-06-22T01:34:20.4357782Z             {
2026-06-22T01:34:20.4357888Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4357976Z               "line": 3709
2026-06-22T01:34:20.4358058Z             },
2026-06-22T01:34:20.4358146Z             {
2026-06-22T01:34:20.4358245Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4358325Z               "line": 3728
2026-06-22T01:34:20.4358410Z             },
2026-06-22T01:34:20.4358496Z             {
2026-06-22T01:34:20.4358599Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4358684Z               "line": 3792
2026-06-22T01:34:20.4358770Z             },
2026-06-22T01:34:20.4358847Z             {
2026-06-22T01:34:20.4359042Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4359128Z               "line": 3834
2026-06-22T01:34:20.4359219Z             },
2026-06-22T01:34:20.4359304Z             {
2026-06-22T01:34:20.4359409Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4359500Z               "line": 4023
2026-06-22T01:34:20.4359581Z             },
2026-06-22T01:34:20.4359666Z             {
2026-06-22T01:34:20.4359772Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4359853Z               "line": 4093
2026-06-22T01:34:20.4359938Z             },
2026-06-22T01:34:20.4360019Z             {
2026-06-22T01:34:20.4360126Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4360205Z               "line": 4317
2026-06-22T01:34:20.4360291Z             },
2026-06-22T01:34:20.4360368Z             {
2026-06-22T01:34:20.4360468Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4360558Z               "line": 4961
2026-06-22T01:34:20.4360644Z             },
2026-06-22T01:34:20.4360726Z             {
2026-06-22T01:34:20.4360834Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.4361036Z               "line": 418
2026-06-22T01:34:20.4361121Z             }
2026-06-22T01:34:20.4361206Z           ]
2026-06-22T01:34:20.4361450Z         },
2026-06-22T01:34:20.4361535Z         "int": {
2026-06-22T01:34:20.4361625Z           "complete": false,
2026-06-22T01:34:20.4361712Z           "evidence": []
2026-06-22T01:34:20.4361798Z         },
2026-06-22T01:34:20.4361892Z         "unit": {
2026-06-22T01:34:20.4361974Z           "complete": true,
2026-06-22T01:34:20.4362069Z           "evidence": [
2026-06-22T01:34:20.4362150Z             {
2026-06-22T01:34:20.4362274Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4362356Z               "line": 1584
2026-06-22T01:34:20.4362436Z             },
2026-06-22T01:34:20.4362517Z             {
2026-06-22T01:34:20.4362618Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4362699Z               "line": 9964
2026-06-22T01:34:20.4362779Z             },
2026-06-22T01:34:20.4362865Z             {
2026-06-22T01:34:20.4362971Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4363056Z               "line": 10134
2026-06-22T01:34:20.4363132Z             },
2026-06-22T01:34:20.4363208Z             {
2026-06-22T01:34:20.4363315Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4363403Z               "line": 10141
2026-06-22T01:34:20.4363484Z             },
2026-06-22T01:34:20.4363560Z             {
2026-06-22T01:34:20.4363665Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4363758Z               "line": 10194
2026-06-22T01:34:20.4363839Z             },
2026-06-22T01:34:20.4363920Z             {
2026-06-22T01:34:20.4364016Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4364107Z               "line": 10211
2026-06-22T01:34:20.4364182Z             },
2026-06-22T01:34:20.4364269Z             {
2026-06-22T01:34:20.4364369Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4364449Z               "line": 10241
2026-06-22T01:34:20.4364535Z             },
2026-06-22T01:34:20.4364603Z             {
2026-06-22T01:34:20.4364698Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4364778Z               "line": 10357
2026-06-22T01:34:20.4364865Z             },
2026-06-22T01:34:20.4364946Z             {
2026-06-22T01:34:20.4365041Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4365121Z               "line": 10508
2026-06-22T01:34:20.4365199Z             }
2026-06-22T01:34:20.4365280Z           ]
2026-06-22T01:34:20.4365361Z         }
2026-06-22T01:34:20.4365446Z       }
2026-06-22T01:34:20.4365533Z     },
2026-06-22T01:34:20.4365613Z     {
2026-06-22T01:34:20.4365709Z       "id": "REQ-SUBNET-2",
2026-06-22T01:34:20.4365933Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-22T01:34:20.4366033Z       "requiredStages": [
2026-06-22T01:34:20.4366115Z         "impl",
2026-06-22T01:34:20.4366210Z         "unit",
2026-06-22T01:34:20.4366295Z         "int"
2026-06-22T01:34:20.4366380Z       ],
2026-06-22T01:34:20.4366465Z       "stages": {
2026-06-22T01:34:20.4366546Z         "doc": {
2026-06-22T01:34:20.4366640Z           "complete": true,
2026-06-22T01:34:20.4366730Z           "evidence": [
2026-06-22T01:34:20.4366807Z             {
2026-06-22T01:34:20.4366959Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T01:34:20.4367044Z               "line": 60
2026-06-22T01:34:20.4367131Z             }
2026-06-22T01:34:20.4367212Z           ]
2026-06-22T01:34:20.4367298Z         },
2026-06-22T01:34:20.4367383Z         "impl": {
2026-06-22T01:34:20.4367480Z           "complete": true,
2026-06-22T01:34:20.4367560Z           "evidence": [
2026-06-22T01:34:20.4367641Z             {
2026-06-22T01:34:20.4367761Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.4367842Z               "line": 980
2026-06-22T01:34:20.4367928Z             },
2026-06-22T01:34:20.4367998Z             {
2026-06-22T01:34:20.4368213Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4368298Z               "line": 2233
2026-06-22T01:34:20.4368453Z             },
2026-06-22T01:34:20.4368532Z             {
2026-06-22T01:34:20.4368652Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4368739Z               "line": 683
2026-06-22T01:34:20.4368819Z             },
2026-06-22T01:34:20.4368903Z             {
2026-06-22T01:34:20.4369113Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:34:20.4369197Z               "line": 867
2026-06-22T01:34:20.4369278Z             },
2026-06-22T01:34:20.4369364Z             {
2026-06-22T01:34:20.4369493Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.4369583Z               "line": 26
2026-06-22T01:34:20.4369664Z             },
2026-06-22T01:34:20.4369750Z             {
2026-06-22T01:34:20.4369859Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.4369950Z               "line": 60
2026-06-22T01:34:20.4370037Z             },
2026-06-22T01:34:20.4370117Z             {
2026-06-22T01:34:20.4370236Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.4370318Z               "line": 168
2026-06-22T01:34:20.4370399Z             },
2026-06-22T01:34:20.4370485Z             {
2026-06-22T01:34:20.4370608Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.4370691Z               "line": 295
2026-06-22T01:34:20.4370765Z             },
2026-06-22T01:34:20.4370856Z             {
2026-06-22T01:34:20.4370962Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.4371047Z               "line": 417
2026-06-22T01:34:20.4371128Z             },
2026-06-22T01:34:20.4371209Z             {
2026-06-22T01:34:20.4371339Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:34:20.4371418Z               "line": 252
2026-06-22T01:34:20.4371500Z             },
2026-06-22T01:34:20.4371582Z             {
2026-06-22T01:34:20.4371682Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4371771Z               "line": 3755
2026-06-22T01:34:20.4371860Z             },
2026-06-22T01:34:20.4371943Z             {
2026-06-22T01:34:20.4372043Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4372133Z               "line": 4256
2026-06-22T01:34:20.4372214Z             },
2026-06-22T01:34:20.4372296Z             {
2026-06-22T01:34:20.4372395Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4372476Z               "line": 4892
2026-06-22T01:34:20.4372558Z             }
2026-06-22T01:34:20.4372643Z           ]
2026-06-22T01:34:20.4372729Z         },
2026-06-22T01:34:20.4372814Z         "int": {
2026-06-22T01:34:20.4372902Z           "complete": true,
2026-06-22T01:34:20.4372992Z           "evidence": [
2026-06-22T01:34:20.4373077Z             {
2026-06-22T01:34:20.4373207Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-22T01:34:20.4373292Z               "line": 22
2026-06-22T01:34:20.4373382Z             },
2026-06-22T01:34:20.4373463Z             {
2026-06-22T01:34:20.4373593Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4373673Z               "line": 645
2026-06-22T01:34:20.4373759Z             },
2026-06-22T01:34:20.4373841Z             {
2026-06-22T01:34:20.4373963Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4374049Z               "line": 887
2026-06-22T01:34:20.4374130Z             }
2026-06-22T01:34:20.4374216Z           ]
2026-06-22T01:34:20.4374295Z         },
2026-06-22T01:34:20.4374375Z         "unit": {
2026-06-22T01:34:20.4374456Z           "complete": true,
2026-06-22T01:34:20.4374548Z           "evidence": [
2026-06-22T01:34:20.4374633Z             {
2026-06-22T01:34:20.4374747Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.4374829Z               "line": 586
2026-06-22T01:34:20.4374910Z             },
2026-06-22T01:34:20.4375000Z             {
2026-06-22T01:34:20.4375206Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4375295Z               "line": 10004
2026-06-22T01:34:20.4375464Z             },
2026-06-22T01:34:20.4375549Z             {
2026-06-22T01:34:20.4375653Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4375735Z               "line": 10715
2026-06-22T01:34:20.4375816Z             }
2026-06-22T01:34:20.4375901Z           ]
2026-06-22T01:34:20.4375987Z         }
2026-06-22T01:34:20.4376069Z       }
2026-06-22T01:34:20.4376150Z     },
2026-06-22T01:34:20.4376235Z     {
2026-06-22T01:34:20.4376316Z       "id": "REQ-SUBNET-3",
2026-06-22T01:34:20.4376588Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-22T01:34:20.4376684Z       "requiredStages": [
2026-06-22T01:34:20.4376770Z         "impl",
2026-06-22T01:34:20.4376855Z         "unit"
2026-06-22T01:34:20.4376935Z       ],
2026-06-22T01:34:20.4377025Z       "stages": {
2026-06-22T01:34:20.4377111Z         "doc": {
2026-06-22T01:34:20.4377210Z           "complete": false,
2026-06-22T01:34:20.4377290Z           "evidence": []
2026-06-22T01:34:20.4377377Z         },
2026-06-22T01:34:20.4377462Z         "impl": {
2026-06-22T01:34:20.4377548Z           "complete": true,
2026-06-22T01:34:20.4377629Z           "evidence": [
2026-06-22T01:34:20.4377715Z             {
2026-06-22T01:34:20.4377844Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4377929Z               "line": 152
2026-06-22T01:34:20.4378011Z             },
2026-06-22T01:34:20.4378097Z             {
2026-06-22T01:34:20.4378220Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4378301Z               "line": 299
2026-06-22T01:34:20.4378378Z             },
2026-06-22T01:34:20.4378458Z             {
2026-06-22T01:34:20.4378573Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4378650Z               "line": 443
2026-06-22T01:34:20.4378736Z             },
2026-06-22T01:34:20.4378806Z             {
2026-06-22T01:34:20.4378926Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4379125Z               "line": 532
2026-06-22T01:34:20.4379202Z             },
2026-06-22T01:34:20.4379280Z             {
2026-06-22T01:34:20.4379398Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4379497Z               "line": 125
2026-06-22T01:34:20.4379568Z             },
2026-06-22T01:34:20.4379649Z             {
2026-06-22T01:34:20.4379757Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4379847Z               "line": 253
2026-06-22T01:34:20.4379933Z             },
2026-06-22T01:34:20.4380015Z             {
2026-06-22T01:34:20.4380128Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4380210Z               "line": 264
2026-06-22T01:34:20.4380292Z             },
2026-06-22T01:34:20.4380373Z             {
2026-06-22T01:34:20.4380496Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4380578Z               "line": 285
2026-06-22T01:34:20.4380668Z             },
2026-06-22T01:34:20.4380744Z             {
2026-06-22T01:34:20.4380849Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4380931Z               "line": 621
2026-06-22T01:34:20.4381011Z             },
2026-06-22T01:34:20.4381091Z             {
2026-06-22T01:34:20.4381212Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4381293Z               "line": 680
2026-06-22T01:34:20.4381379Z             },
2026-06-22T01:34:20.4381445Z             {
2026-06-22T01:34:20.4381575Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.4381659Z               "line": 61
2026-06-22T01:34:20.4381745Z             },
2026-06-22T01:34:20.4381828Z             {
2026-06-22T01:34:20.4381941Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.4382032Z               "line": 90
2026-06-22T01:34:20.4382219Z             },
2026-06-22T01:34:20.4382312Z             {
2026-06-22T01:34:20.4382522Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.4382613Z               "line": 125
2026-06-22T01:34:20.4382698Z             },
2026-06-22T01:34:20.4382784Z             {
2026-06-22T01:34:20.4382903Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T01:34:20.4382983Z               "line": 9
2026-06-22T01:34:20.4383069Z             },
2026-06-22T01:34:20.4383157Z             {
2026-06-22T01:34:20.4383257Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4383341Z               "line": 4093
2026-06-22T01:34:20.4383423Z             },
2026-06-22T01:34:20.4383509Z             {
2026-06-22T01:34:20.4383613Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.4383704Z               "line": 445
2026-06-22T01:34:20.4383786Z             }
2026-06-22T01:34:20.4383871Z           ]
2026-06-22T01:34:20.4383966Z         },
2026-06-22T01:34:20.4384048Z         "int": {
2026-06-22T01:34:20.4384139Z           "complete": false,
2026-06-22T01:34:20.4384228Z           "evidence": []
2026-06-22T01:34:20.4384305Z         },
2026-06-22T01:34:20.4384387Z         "unit": {
2026-06-22T01:34:20.4384473Z           "complete": true,
2026-06-22T01:34:20.4384557Z           "evidence": [
2026-06-22T01:34:20.4384637Z             {
2026-06-22T01:34:20.4384767Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4384846Z               "line": 1356
2026-06-22T01:34:20.4384936Z             },
2026-06-22T01:34:20.4385017Z             {
2026-06-22T01:34:20.4385132Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4385227Z               "line": 1713
2026-06-22T01:34:20.4385302Z             },
2026-06-22T01:34:20.4385389Z             {
2026-06-22T01:34:20.4385494Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.4385589Z               "line": 892
2026-06-22T01:34:20.4385680Z             },
2026-06-22T01:34:20.4385766Z             {
2026-06-22T01:34:20.4385889Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4385980Z               "line": 991
2026-06-22T01:34:20.4386066Z             },
2026-06-22T01:34:20.4386147Z             {
2026-06-22T01:34:20.4386266Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4386358Z               "line": 1041
2026-06-22T01:34:20.4386438Z             },
2026-06-22T01:34:20.4386519Z             {
2026-06-22T01:34:20.4386629Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4386719Z               "line": 1100
2026-06-22T01:34:20.4386805Z             },
2026-06-22T01:34:20.4386890Z             {
2026-06-22T01:34:20.4387011Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:34:20.4387090Z               "line": 234
2026-06-22T01:34:20.4387177Z             },
2026-06-22T01:34:20.4387259Z             {
2026-06-22T01:34:20.4387387Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T01:34:20.4387467Z               "line": 49
2026-06-22T01:34:20.4387562Z             },
2026-06-22T01:34:20.4387643Z             {
2026-06-22T01:34:20.4387750Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4387850Z               "line": 10357
2026-06-22T01:34:20.4387927Z             },
2026-06-22T01:34:20.4388018Z             {
2026-06-22T01:34:20.4388108Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4388198Z               "line": 10463
2026-06-22T01:34:20.4388280Z             },
2026-06-22T01:34:20.4388361Z             {
2026-06-22T01:34:20.4388465Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4388552Z               "line": 10681
2026-06-22T01:34:20.4388638Z             }
2026-06-22T01:34:20.4388723Z           ]
2026-06-22T01:34:20.4388799Z         }
2026-06-22T01:34:20.4388886Z       }
2026-06-22T01:34:20.4389062Z     },
2026-06-22T01:34:20.4389277Z     {
2026-06-22T01:34:20.4389366Z       "id": "REQ-SUBNET-4",
2026-06-22T01:34:20.4389653Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-22T01:34:20.4389845Z       "requiredStages": [
2026-06-22T01:34:20.4389926Z         "impl",
2026-06-22T01:34:20.4390010Z         "unit"
2026-06-22T01:34:20.4390095Z       ],
2026-06-22T01:34:20.4390186Z       "stages": {
2026-06-22T01:34:20.4390271Z         "doc": {
2026-06-22T01:34:20.4390364Z           "complete": true,
2026-06-22T01:34:20.4390460Z           "evidence": [
2026-06-22T01:34:20.4390542Z             {
2026-06-22T01:34:20.4390693Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T01:34:20.4390774Z               "line": 60
2026-06-22T01:34:20.4390862Z             }
2026-06-22T01:34:20.4390938Z           ]
2026-06-22T01:34:20.4391022Z         },
2026-06-22T01:34:20.4391104Z         "impl": {
2026-06-22T01:34:20.4391190Z           "complete": true,
2026-06-22T01:34:20.4391281Z           "evidence": [
2026-06-22T01:34:20.4391356Z             {
2026-06-22T01:34:20.4391472Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4391557Z               "line": 3399
2026-06-22T01:34:20.4391643Z             },
2026-06-22T01:34:20.4391724Z             {
2026-06-22T01:34:20.4391825Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4391910Z               "line": 4859
2026-06-22T01:34:20.4391985Z             },
2026-06-22T01:34:20.4392073Z             {
2026-06-22T01:34:20.4392168Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4392248Z               "line": 4892
2026-06-22T01:34:20.4392329Z             }
2026-06-22T01:34:20.4392416Z           ]
2026-06-22T01:34:20.4392501Z         },
2026-06-22T01:34:20.4392582Z         "int": {
2026-06-22T01:34:20.4392673Z           "complete": false,
2026-06-22T01:34:20.4392750Z           "evidence": []
2026-06-22T01:34:20.4392840Z         },
2026-06-22T01:34:20.4392934Z         "unit": {
2026-06-22T01:34:20.4393015Z           "complete": true,
2026-06-22T01:34:20.4393106Z           "evidence": [
2026-06-22T01:34:20.4393192Z             {
2026-06-22T01:34:20.4393301Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4393387Z               "line": 10120
2026-06-22T01:34:20.4393468Z             },
2026-06-22T01:34:20.4393553Z             {
2026-06-22T01:34:20.4393649Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4393741Z               "line": 10194
2026-06-22T01:34:20.4393822Z             }
2026-06-22T01:34:20.4393911Z           ]
2026-06-22T01:34:20.4393988Z         }
2026-06-22T01:34:20.4394074Z       }
2026-06-22T01:34:20.4394160Z     },
2026-06-22T01:34:20.4394245Z     {
2026-06-22T01:34:20.4394342Z       "id": "REQ-SUBNET-5",
2026-06-22T01:34:20.4395486Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-22T01:34:20.4395591Z       "requiredStages": [
2026-06-22T01:34:20.4395682Z         "impl",
2026-06-22T01:34:20.4395767Z         "unit",
2026-06-22T01:34:20.4395858Z         "int"
2026-06-22T01:34:20.4395944Z       ],
2026-06-22T01:34:20.4396030Z       "stages": {
2026-06-22T01:34:20.4396120Z         "doc": {
2026-06-22T01:34:20.4396216Z           "complete": false,
2026-06-22T01:34:20.4396307Z           "evidence": []
2026-06-22T01:34:20.4396392Z         },
2026-06-22T01:34:20.4396478Z         "impl": {
2026-06-22T01:34:20.4396570Z           "complete": true,
2026-06-22T01:34:20.4396650Z           "evidence": [
2026-06-22T01:34:20.4396735Z             {
2026-06-22T01:34:20.4396865Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:34:20.4396955Z               "line": 128
2026-06-22T01:34:20.4397136Z             },
2026-06-22T01:34:20.4397218Z             {
2026-06-22T01:34:20.4397341Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:34:20.4397504Z               "line": 413
2026-06-22T01:34:20.4397585Z             },
2026-06-22T01:34:20.4397670Z             {
2026-06-22T01:34:20.4397795Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.4397872Z               "line": 74
2026-06-22T01:34:20.4397965Z             },
2026-06-22T01:34:20.4398046Z             {
2026-06-22T01:34:20.4398155Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.4398236Z               "line": 332
2026-06-22T01:34:20.4398325Z             },
2026-06-22T01:34:20.4398400Z             {
2026-06-22T01:34:20.4398506Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.4398593Z               "line": 621
2026-06-22T01:34:20.4398673Z             },
2026-06-22T01:34:20.4398758Z             {
2026-06-22T01:34:20.4398888Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:34:20.4399044Z               "line": 31
2026-06-22T01:34:20.4399132Z             },
2026-06-22T01:34:20.4399207Z             {
2026-06-22T01:34:20.4399335Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:34:20.4399422Z               "line": 50
2026-06-22T01:34:20.4399503Z             },
2026-06-22T01:34:20.4399584Z             {
2026-06-22T01:34:20.4399707Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:34:20.4399808Z               "line": 69
2026-06-22T01:34:20.4399894Z             },
2026-06-22T01:34:20.4399979Z             {
2026-06-22T01:34:20.4400100Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:34:20.4400194Z               "line": 113
2026-06-22T01:34:20.4400270Z             },
2026-06-22T01:34:20.4400342Z             {
2026-06-22T01:34:20.4400481Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T01:34:20.4400566Z               "line": 25
2026-06-22T01:34:20.4400660Z             },
2026-06-22T01:34:20.4400746Z             {
2026-06-22T01:34:20.4400873Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T01:34:20.4400967Z               "line": 34
2026-06-22T01:34:20.4401035Z             },
2026-06-22T01:34:20.4401112Z             {
2026-06-22T01:34:20.4401226Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T01:34:20.4401311Z               "line": 17
2026-06-22T01:34:20.4401393Z             },
2026-06-22T01:34:20.4401478Z             {
2026-06-22T01:34:20.4401587Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4401669Z               "line": 4817
2026-06-22T01:34:20.4401760Z             },
2026-06-22T01:34:20.4401836Z             {
2026-06-22T01:34:20.4401945Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:34:20.4402027Z               "line": 419
2026-06-22T01:34:20.4402108Z             }
2026-06-22T01:34:20.4402193Z           ]
2026-06-22T01:34:20.4402279Z         },
2026-06-22T01:34:20.4402366Z         "int": {
2026-06-22T01:34:20.4402460Z           "complete": true,
2026-06-22T01:34:20.4402555Z           "evidence": [
2026-06-22T01:34:20.4402643Z             {
2026-06-22T01:34:20.4402761Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.4402842Z               "line": 821
2026-06-22T01:34:20.4402928Z             }
2026-06-22T01:34:20.4403015Z           ]
2026-06-22T01:34:20.4403089Z         },
2026-06-22T01:34:20.4403171Z         "unit": {
2026-06-22T01:34:20.4403258Z           "complete": true,
2026-06-22T01:34:20.4403344Z           "evidence": [
2026-06-22T01:34:20.4403432Z             {
2026-06-22T01:34:20.4403537Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.4403627Z               "line": 341
2026-06-22T01:34:20.4403710Z             },
2026-06-22T01:34:20.4403799Z             {
2026-06-22T01:34:20.4403914Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:34:20.4404109Z               "line": 1115
2026-06-22T01:34:20.4404195Z             },
2026-06-22T01:34:20.4404277Z             {
2026-06-22T01:34:20.4404490Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:34:20.4404577Z               "line": 151
2026-06-22T01:34:20.4404667Z             },
2026-06-22T01:34:20.4404748Z             {
2026-06-22T01:34:20.4404868Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T01:34:20.4404959Z               "line": 61
2026-06-22T01:34:20.4405044Z             },
2026-06-22T01:34:20.4405129Z             {
2026-06-22T01:34:20.4405245Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T01:34:20.4405330Z               "line": 111
2026-06-22T01:34:20.4405415Z             },
2026-06-22T01:34:20.4405497Z             {
2026-06-22T01:34:20.4405617Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T01:34:20.4405696Z               "line": 138
2026-06-22T01:34:20.4405786Z             },
2026-06-22T01:34:20.4405867Z             {
2026-06-22T01:34:20.4405985Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T01:34:20.4406075Z               "line": 148
2026-06-22T01:34:20.4406161Z             },
2026-06-22T01:34:20.4406252Z             {
2026-06-22T01:34:20.4406356Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4406447Z               "line": 10021
2026-06-22T01:34:20.4406529Z             }
2026-06-22T01:34:20.4406619Z           ]
2026-06-22T01:34:20.4406699Z         }
2026-06-22T01:34:20.4406786Z       }
2026-06-22T01:34:20.4406877Z     },
2026-06-22T01:34:20.4406953Z     {
2026-06-22T01:34:20.4407047Z       "id": "REQ-SUBNET-6",
2026-06-22T01:34:20.4407720Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-22T01:34:20.4407826Z       "requiredStages": [
2026-06-22T01:34:20.4407915Z         "impl",
2026-06-22T01:34:20.4407996Z         "unit"
2026-06-22T01:34:20.4408088Z       ],
2026-06-22T01:34:20.4408169Z       "stages": {
2026-06-22T01:34:20.4408254Z         "doc": {
2026-06-22T01:34:20.4408345Z           "complete": false,
2026-06-22T01:34:20.4408437Z           "evidence": []
2026-06-22T01:34:20.4408525Z         },
2026-06-22T01:34:20.4408606Z         "impl": {
2026-06-22T01:34:20.4408692Z           "complete": true,
2026-06-22T01:34:20.4408773Z           "evidence": [
2026-06-22T01:34:20.4408857Z             {
2026-06-22T01:34:20.4409042Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4409138Z               "line": 254
2026-06-22T01:34:20.4409233Z             },
2026-06-22T01:34:20.4409318Z             {
2026-06-22T01:34:20.4409419Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4409505Z               "line": 4475
2026-06-22T01:34:20.4409590Z             },
2026-06-22T01:34:20.4409672Z             {
2026-06-22T01:34:20.4409772Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4409857Z               "line": 4492
2026-06-22T01:34:20.4409938Z             },
2026-06-22T01:34:20.4410021Z             {
2026-06-22T01:34:20.4410110Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4410196Z               "line": 4545
2026-06-22T01:34:20.4410277Z             },
2026-06-22T01:34:20.4410364Z             {
2026-06-22T01:34:20.4410468Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4410554Z               "line": 4568
2026-06-22T01:34:20.4410636Z             }
2026-06-22T01:34:20.4410721Z           ]
2026-06-22T01:34:20.4410806Z         },
2026-06-22T01:34:20.4410892Z         "int": {
2026-06-22T01:34:20.4410985Z           "complete": false,
2026-06-22T01:34:20.4411069Z           "evidence": []
2026-06-22T01:34:20.4411154Z         },
2026-06-22T01:34:20.4411239Z         "unit": {
2026-06-22T01:34:20.4411325Z           "complete": true,
2026-06-22T01:34:20.4411522Z           "evidence": [
2026-06-22T01:34:20.4411599Z             {
2026-06-22T01:34:20.4411701Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4411881Z               "line": 10035
2026-06-22T01:34:20.4411962Z             },
2026-06-22T01:34:20.4412043Z             {
2026-06-22T01:34:20.4412147Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4412234Z               "line": 10068
2026-06-22T01:34:20.4412320Z             },
2026-06-22T01:34:20.4412401Z             {
2026-06-22T01:34:20.4412505Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4412592Z               "line": 10077
2026-06-22T01:34:20.4412677Z             }
2026-06-22T01:34:20.4412763Z           ]
2026-06-22T01:34:20.4412849Z         }
2026-06-22T01:34:20.4412931Z       }
2026-06-22T01:34:20.4413016Z     },
2026-06-22T01:34:20.4413111Z     {
2026-06-22T01:34:20.4413198Z       "id": "REQ-SUBNET-7",
2026-06-22T01:34:20.4414794Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-22T01:34:20.4414913Z       "requiredStages": [
2026-06-22T01:34:20.4414998Z         "impl",
2026-06-22T01:34:20.4415084Z         "unit"
2026-06-22T01:34:20.4415161Z       ],
2026-06-22T01:34:20.4415246Z       "stages": {
2026-06-22T01:34:20.4415322Z         "doc": {
2026-06-22T01:34:20.4415413Z           "complete": false,
2026-06-22T01:34:20.4415504Z           "evidence": []
2026-06-22T01:34:20.4415584Z         },
2026-06-22T01:34:20.4415670Z         "impl": {
2026-06-22T01:34:20.4415758Z           "complete": true,
2026-06-22T01:34:20.4415867Z           "evidence": [
2026-06-22T01:34:20.4415952Z             {
2026-06-22T01:34:20.4418715Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T01:34:20.4418814Z               "line": 17
2026-06-22T01:34:20.4418901Z             },
2026-06-22T01:34:20.4419077Z             {
2026-06-22T01:34:20.4419204Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.4419295Z               "line": 103
2026-06-22T01:34:20.4419375Z             },
2026-06-22T01:34:20.4419483Z             {
2026-06-22T01:34:20.4419612Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:34:20.4419698Z               "line": 312
2026-06-22T01:34:20.4419783Z             },
2026-06-22T01:34:20.4419864Z             {
2026-06-22T01:34:20.4419999Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:34:20.4420084Z               "line": 131
2026-06-22T01:34:20.4420170Z             },
2026-06-22T01:34:20.4420257Z             {
2026-06-22T01:34:20.4420394Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4420479Z               "line": 160
2026-06-22T01:34:20.4420561Z             },
2026-06-22T01:34:20.4420647Z             {
2026-06-22T01:34:20.4420766Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4420847Z               "line": 447
2026-06-22T01:34:20.4420929Z             },
2026-06-22T01:34:20.4421009Z             {
2026-06-22T01:34:20.4421133Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4421215Z               "line": 670
2026-06-22T01:34:20.4421300Z             },
2026-06-22T01:34:20.4421381Z             {
2026-06-22T01:34:20.4421506Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4421592Z               "line": 710
2026-06-22T01:34:20.4421676Z             },
2026-06-22T01:34:20.4421761Z             {
2026-06-22T01:34:20.4421881Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4422097Z               "line": 766
2026-06-22T01:34:20.4422184Z             },
2026-06-22T01:34:20.4422374Z             {
2026-06-22T01:34:20.4422504Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.4422580Z               "line": 136
2026-06-22T01:34:20.4422703Z             },
2026-06-22T01:34:20.4422780Z             {
2026-06-22T01:34:20.4422899Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4422980Z               "line": 139
2026-06-22T01:34:20.4423065Z             }
2026-06-22T01:34:20.4423148Z           ]
2026-06-22T01:34:20.4423232Z         },
2026-06-22T01:34:20.4423323Z         "int": {
2026-06-22T01:34:20.4423414Z           "complete": false,
2026-06-22T01:34:20.4423509Z           "evidence": []
2026-06-22T01:34:20.4423590Z         },
2026-06-22T01:34:20.4423676Z         "unit": {
2026-06-22T01:34:20.4423758Z           "complete": true,
2026-06-22T01:34:20.4423848Z           "evidence": [
2026-06-22T01:34:20.4423933Z             {
2026-06-22T01:34:20.4424058Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T01:34:20.4424144Z               "line": 136
2026-06-22T01:34:20.4424229Z             },
2026-06-22T01:34:20.4424310Z             {
2026-06-22T01:34:20.4424431Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T01:34:20.4424501Z               "line": 156
2026-06-22T01:34:20.4424586Z             },
2026-06-22T01:34:20.4424661Z             {
2026-06-22T01:34:20.4424792Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4424877Z               "line": 987
2026-06-22T01:34:20.4424947Z             },
2026-06-22T01:34:20.4425029Z             {
2026-06-22T01:34:20.4425149Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:34:20.4425229Z               "line": 1009
2026-06-22T01:34:20.4425310Z             },
2026-06-22T01:34:20.4425392Z             {
2026-06-22T01:34:20.4425521Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:34:20.4425600Z               "line": 1419
2026-06-22T01:34:20.4425678Z             },
2026-06-22T01:34:20.4425802Z             {
2026-06-22T01:34:20.4425920Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:34:20.4425998Z               "line": 1036
2026-06-22T01:34:20.4426074Z             }
2026-06-22T01:34:20.4426159Z           ]
2026-06-22T01:34:20.4426235Z         }
2026-06-22T01:34:20.4426318Z       }
2026-06-22T01:34:20.4426393Z     },
2026-06-22T01:34:20.4426478Z     {
2026-06-22T01:34:20.4426564Z       "id": "REQ-SUBNET-8",
2026-06-22T01:34:20.4427687Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-22T01:34:20.4427801Z       "requiredStages": [
2026-06-22T01:34:20.4427882Z         "impl",
2026-06-22T01:34:20.4427964Z         "unit"
2026-06-22T01:34:20.4428054Z       ],
2026-06-22T01:34:20.4428143Z       "stages": {
2026-06-22T01:34:20.4428226Z         "doc": {
2026-06-22T01:34:20.4428312Z           "complete": false,
2026-06-22T01:34:20.4428397Z           "evidence": []
2026-06-22T01:34:20.4428482Z         },
2026-06-22T01:34:20.4428569Z         "impl": {
2026-06-22T01:34:20.4428650Z           "complete": true,
2026-06-22T01:34:20.4428736Z           "evidence": [
2026-06-22T01:34:20.4428816Z             {
2026-06-22T01:34:20.4428927Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4429131Z               "line": 3835
2026-06-22T01:34:20.4429218Z             },
2026-06-22T01:34:20.4429303Z             {
2026-06-22T01:34:20.4429403Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4429490Z               "line": 3864
2026-06-22T01:34:20.4429571Z             },
2026-06-22T01:34:20.4429759Z             {
2026-06-22T01:34:20.4429864Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4430038Z               "line": 3881
2026-06-22T01:34:20.4430119Z             },
2026-06-22T01:34:20.4430201Z             {
2026-06-22T01:34:20.4430297Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4430386Z               "line": 3904
2026-06-22T01:34:20.4430473Z             },
2026-06-22T01:34:20.4430550Z             {
2026-06-22T01:34:20.4430649Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4430730Z               "line": 4318
2026-06-22T01:34:20.4430802Z             }
2026-06-22T01:34:20.4430888Z           ]
2026-06-22T01:34:20.4430973Z         },
2026-06-22T01:34:20.4431059Z         "int": {
2026-06-22T01:34:20.4431146Z           "complete": false,
2026-06-22T01:34:20.4431221Z           "evidence": []
2026-06-22T01:34:20.4431311Z         },
2026-06-22T01:34:20.4431393Z         "unit": {
2026-06-22T01:34:20.4431485Z           "complete": true,
2026-06-22T01:34:20.4431569Z           "evidence": [
2026-06-22T01:34:20.4431650Z             {
2026-06-22T01:34:20.4431761Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4431846Z               "line": 10225
2026-06-22T01:34:20.4431926Z             },
2026-06-22T01:34:20.4431998Z             {
2026-06-22T01:34:20.4432105Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4432198Z               "line": 10241
2026-06-22T01:34:20.4432279Z             }
2026-06-22T01:34:20.4432364Z           ]
2026-06-22T01:34:20.4432450Z         }
2026-06-22T01:34:20.4432530Z       }
2026-06-22T01:34:20.4432615Z     },
2026-06-22T01:34:20.4432701Z     {
2026-06-22T01:34:20.4432792Z       "id": "REQ-TERM-1",
2026-06-22T01:34:20.4432958Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-22T01:34:20.4433054Z       "requiredStages": [
2026-06-22T01:34:20.4433135Z         "impl",
2026-06-22T01:34:20.4433220Z         "unit"
2026-06-22T01:34:20.4433301Z       ],
2026-06-22T01:34:20.4433388Z       "stages": {
2026-06-22T01:34:20.4433478Z         "doc": {
2026-06-22T01:34:20.4433563Z           "complete": false,
2026-06-22T01:34:20.4433660Z           "evidence": []
2026-06-22T01:34:20.4433741Z         },
2026-06-22T01:34:20.4433826Z         "impl": {
2026-06-22T01:34:20.4433912Z           "complete": true,
2026-06-22T01:34:20.4433998Z           "evidence": [
2026-06-22T01:34:20.4434084Z             {
2026-06-22T01:34:20.4434198Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:34:20.4434289Z               "line": 59
2026-06-22T01:34:20.4434371Z             },
2026-06-22T01:34:20.4434455Z             {
2026-06-22T01:34:20.4434561Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:34:20.4434647Z               "line": 234
2026-06-22T01:34:20.4434727Z             },
2026-06-22T01:34:20.4434813Z             {
2026-06-22T01:34:20.4434934Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T01:34:20.4435028Z               "line": 100
2026-06-22T01:34:20.4435117Z             }
2026-06-22T01:34:20.4435193Z           ]
2026-06-22T01:34:20.4435279Z         },
2026-06-22T01:34:20.4435371Z         "int": {
2026-06-22T01:34:20.4435461Z           "complete": false,
2026-06-22T01:34:20.4435560Z           "evidence": []
2026-06-22T01:34:20.4435642Z         },
2026-06-22T01:34:20.4435728Z         "unit": {
2026-06-22T01:34:20.4435813Z           "complete": true,
2026-06-22T01:34:20.4435899Z           "evidence": [
2026-06-22T01:34:20.4435981Z             {
2026-06-22T01:34:20.4436095Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T01:34:20.4436180Z               "line": 24
2026-06-22T01:34:20.4436258Z             },
2026-06-22T01:34:20.4436338Z             {
2026-06-22T01:34:20.4436452Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T01:34:20.4436543Z               "line": 56
2026-06-22T01:34:20.4436629Z             }
2026-06-22T01:34:20.4436714Z           ]
2026-06-22T01:34:20.4436796Z         }
2026-06-22T01:34:20.4436958Z       }
2026-06-22T01:34:20.4437053Z     },
2026-06-22T01:34:20.4437120Z     {
2026-06-22T01:34:20.4437287Z       "id": "REQ-TERM-2",
2026-06-22T01:34:20.4437457Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-22T01:34:20.4437548Z       "requiredStages": [
2026-06-22T01:34:20.4437633Z         "impl",
2026-06-22T01:34:20.4437717Z         "unit"
2026-06-22T01:34:20.4437803Z       ],
2026-06-22T01:34:20.4437884Z       "stages": {
2026-06-22T01:34:20.4437971Z         "doc": {
2026-06-22T01:34:20.4438060Z           "complete": false,
2026-06-22T01:34:20.4438146Z           "evidence": []
2026-06-22T01:34:20.4438228Z         },
2026-06-22T01:34:20.4438313Z         "impl": {
2026-06-22T01:34:20.4438413Z           "complete": true,
2026-06-22T01:34:20.4438500Z           "evidence": [
2026-06-22T01:34:20.4438586Z             {
2026-06-22T01:34:20.4438699Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T01:34:20.4438786Z               "line": 117
2026-06-22T01:34:20.4438872Z             },
2026-06-22T01:34:20.4439033Z             {
2026-06-22T01:34:20.4439148Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T01:34:20.4439234Z               "line": 127
2026-06-22T01:34:20.4439324Z             }
2026-06-22T01:34:20.4439406Z           ]
2026-06-22T01:34:20.4439487Z         },
2026-06-22T01:34:20.4439572Z         "int": {
2026-06-22T01:34:20.4439663Z           "complete": false,
2026-06-22T01:34:20.4439750Z           "evidence": []
2026-06-22T01:34:20.4439831Z         },
2026-06-22T01:34:20.4439915Z         "unit": {
2026-06-22T01:34:20.4440006Z           "complete": true,
2026-06-22T01:34:20.4440089Z           "evidence": [
2026-06-22T01:34:20.4440169Z             {
2026-06-22T01:34:20.4440286Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T01:34:20.4440367Z               "line": 46
2026-06-22T01:34:20.4440448Z             },
2026-06-22T01:34:20.4440533Z             {
2026-06-22T01:34:20.4440641Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T01:34:20.4440723Z               "line": 77
2026-06-22T01:34:20.4440809Z             }
2026-06-22T01:34:20.4440895Z           ]
2026-06-22T01:34:20.4440980Z         }
2026-06-22T01:34:20.4441057Z       }
2026-06-22T01:34:20.4441138Z     },
2026-06-22T01:34:20.4441223Z     {
2026-06-22T01:34:20.4441309Z       "id": "REQ-TERM-3",
2026-06-22T01:34:20.4441443Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-22T01:34:20.4441524Z       "requiredStages": [
2026-06-22T01:34:20.4441619Z         "impl",
2026-06-22T01:34:20.4441696Z         "unit"
2026-06-22T01:34:20.4441782Z       ],
2026-06-22T01:34:20.4441872Z       "stages": {
2026-06-22T01:34:20.4441953Z         "doc": {
2026-06-22T01:34:20.4442045Z           "complete": false,
2026-06-22T01:34:20.4442124Z           "evidence": []
2026-06-22T01:34:20.4442205Z         },
2026-06-22T01:34:20.4442287Z         "impl": {
2026-06-22T01:34:20.4442374Z           "complete": true,
2026-06-22T01:34:20.4442472Z           "evidence": [
2026-06-22T01:34:20.4442549Z             {
2026-06-22T01:34:20.4442655Z               "path": "crates/spt-term/src/stream.rs",
2026-06-22T01:34:20.4442750Z               "line": 71
2026-06-22T01:34:20.4442824Z             }
2026-06-22T01:34:20.4442900Z           ]
2026-06-22T01:34:20.4442982Z         },
2026-06-22T01:34:20.4443072Z         "int": {
2026-06-22T01:34:20.4443156Z           "complete": false,
2026-06-22T01:34:20.4443251Z           "evidence": []
2026-06-22T01:34:20.4443328Z         },
2026-06-22T01:34:20.4443414Z         "unit": {
2026-06-22T01:34:20.4443504Z           "complete": true,
2026-06-22T01:34:20.4443595Z           "evidence": [
2026-06-22T01:34:20.4443686Z             {
2026-06-22T01:34:20.4443794Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T01:34:20.4443880Z               "line": 37
2026-06-22T01:34:20.4443963Z             },
2026-06-22T01:34:20.4444043Z             {
2026-06-22T01:34:20.4444152Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T01:34:20.4444357Z               "line": 67
2026-06-22T01:34:20.4444433Z             }
2026-06-22T01:34:20.4444607Z           ]
2026-06-22T01:34:20.4444691Z         }
2026-06-22T01:34:20.4444767Z       }
2026-06-22T01:34:20.4444849Z     },
2026-06-22T01:34:20.4444931Z     {
2026-06-22T01:34:20.4445015Z       "id": "REQ-TERM-4",
2026-06-22T01:34:20.4445479Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-22T01:34:20.4445570Z       "requiredStages": [
2026-06-22T01:34:20.4445654Z         "impl",
2026-06-22T01:34:20.4445730Z         "unit",
2026-06-22T01:34:20.4445811Z         "int"
2026-06-22T01:34:20.4445897Z       ],
2026-06-22T01:34:20.4445978Z       "stages": {
2026-06-22T01:34:20.4446068Z         "doc": {
2026-06-22T01:34:20.4446154Z           "complete": false,
2026-06-22T01:34:20.4446245Z           "evidence": []
2026-06-22T01:34:20.4446335Z         },
2026-06-22T01:34:20.4446420Z         "impl": {
2026-06-22T01:34:20.4446499Z           "complete": true,
2026-06-22T01:34:20.4446593Z           "evidence": [
2026-06-22T01:34:20.4446678Z             {
2026-06-22T01:34:20.4446784Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4446870Z               "line": 37
2026-06-22T01:34:20.4446951Z             },
2026-06-22T01:34:20.4447036Z             {
2026-06-22T01:34:20.4447152Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4447246Z               "line": 25
2026-06-22T01:34:20.4447327Z             },
2026-06-22T01:34:20.4447404Z             {
2026-06-22T01:34:20.4447518Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4447603Z               "line": 114
2026-06-22T01:34:20.4447689Z             },
2026-06-22T01:34:20.4447772Z             {
2026-06-22T01:34:20.4447884Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4447984Z               "line": 267
2026-06-22T01:34:20.4448070Z             },
2026-06-22T01:34:20.4448151Z             {
2026-06-22T01:34:20.4448259Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4448339Z               "line": 289
2026-06-22T01:34:20.4448421Z             },
2026-06-22T01:34:20.4448502Z             {
2026-06-22T01:34:20.4448616Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4448702Z               "line": 307
2026-06-22T01:34:20.4448788Z             },
2026-06-22T01:34:20.4448869Z             {
2026-06-22T01:34:20.4449074Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:34:20.4449151Z               "line": 33
2026-06-22T01:34:20.4449231Z             },
2026-06-22T01:34:20.4449312Z             {
2026-06-22T01:34:20.4449422Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4449513Z               "line": 52
2026-06-22T01:34:20.4449598Z             },
2026-06-22T01:34:20.4449685Z             {
2026-06-22T01:34:20.4449803Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4449884Z               "line": 180
2026-06-22T01:34:20.4449971Z             },
2026-06-22T01:34:20.4450052Z             {
2026-06-22T01:34:20.4450161Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4450246Z               "line": 190
2026-06-22T01:34:20.4450334Z             },
2026-06-22T01:34:20.4450423Z             {
2026-06-22T01:34:20.4450533Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4450624Z               "line": 250
2026-06-22T01:34:20.4450696Z             },
2026-06-22T01:34:20.4450780Z             {
2026-06-22T01:34:20.4450899Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4450990Z               "line": 284
2026-06-22T01:34:20.4451074Z             },
2026-06-22T01:34:20.4451154Z             {
2026-06-22T01:34:20.4451269Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4451460Z               "line": 295
2026-06-22T01:34:20.4451545Z             },
2026-06-22T01:34:20.4451737Z             {
2026-06-22T01:34:20.4451845Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4451932Z               "line": 1193
2026-06-22T01:34:20.4452018Z             }
2026-06-22T01:34:20.4452103Z           ]
2026-06-22T01:34:20.4452184Z         },
2026-06-22T01:34:20.4452270Z         "int": {
2026-06-22T01:34:20.4452351Z           "complete": true,
2026-06-22T01:34:20.4452437Z           "evidence": [
2026-06-22T01:34:20.4452527Z             {
2026-06-22T01:34:20.4452628Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-22T01:34:20.4452717Z               "line": 18
2026-06-22T01:34:20.4452794Z             }
2026-06-22T01:34:20.4452882Z           ]
2026-06-22T01:34:20.4452967Z         },
2026-06-22T01:34:20.4453051Z         "unit": {
2026-06-22T01:34:20.4453153Z           "complete": true,
2026-06-22T01:34:20.4453239Z           "evidence": [
2026-06-22T01:34:20.4453329Z             {
2026-06-22T01:34:20.4453432Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4453537Z               "line": 364
2026-06-22T01:34:20.4453618Z             },
2026-06-22T01:34:20.4453702Z             {
2026-06-22T01:34:20.4453821Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4453898Z               "line": 416
2026-06-22T01:34:20.4453979Z             },
2026-06-22T01:34:20.4454054Z             {
2026-06-22T01:34:20.4454169Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4454255Z               "line": 426
2026-06-22T01:34:20.4454341Z             },
2026-06-22T01:34:20.4454426Z             {
2026-06-22T01:34:20.4454532Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4454618Z               "line": 436
2026-06-22T01:34:20.4454702Z             },
2026-06-22T01:34:20.4454790Z             {
2026-06-22T01:34:20.4454899Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4454994Z               "line": 456
2026-06-22T01:34:20.4455075Z             },
2026-06-22T01:34:20.4455167Z             {
2026-06-22T01:34:20.4455276Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4455366Z               "line": 478
2026-06-22T01:34:20.4455448Z             },
2026-06-22T01:34:20.4455538Z             {
2026-06-22T01:34:20.4455656Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4455734Z               "line": 491
2026-06-22T01:34:20.4455820Z             },
2026-06-22T01:34:20.4455904Z             {
2026-06-22T01:34:20.4456015Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:34:20.4456106Z               "line": 502
2026-06-22T01:34:20.4456191Z             },
2026-06-22T01:34:20.4456276Z             {
2026-06-22T01:34:20.4456381Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:34:20.4456467Z               "line": 108
2026-06-22T01:34:20.4456557Z             },
2026-06-22T01:34:20.4456643Z             {
2026-06-22T01:34:20.4456758Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T01:34:20.4456858Z               "line": 119
2026-06-22T01:34:20.4456938Z             },
2026-06-22T01:34:20.4457020Z             {
2026-06-22T01:34:20.4457134Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T01:34:20.4457224Z               "line": 127
2026-06-22T01:34:20.4457305Z             },
2026-06-22T01:34:20.4457397Z             {
2026-06-22T01:34:20.4457511Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4457596Z               "line": 474
2026-06-22T01:34:20.4457683Z             },
2026-06-22T01:34:20.4457759Z             {
2026-06-22T01:34:20.4457877Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4457954Z               "line": 501
2026-06-22T01:34:20.4458032Z             },
2026-06-22T01:34:20.4458116Z             {
2026-06-22T01:34:20.4458221Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4458394Z               "line": 520
2026-06-22T01:34:20.4458539Z             },
2026-06-22T01:34:20.4458625Z             {
2026-06-22T01:34:20.4458729Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4458819Z               "line": 535
2026-06-22T01:34:20.4458899Z             },
2026-06-22T01:34:20.4459058Z             {
2026-06-22T01:34:20.4459176Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4459262Z               "line": 561
2026-06-22T01:34:20.4459353Z             },
2026-06-22T01:34:20.4459433Z             {
2026-06-22T01:34:20.4459547Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4459635Z               "line": 581
2026-06-22T01:34:20.4459711Z             },
2026-06-22T01:34:20.4459796Z             {
2026-06-22T01:34:20.4459906Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4459996Z               "line": 591
2026-06-22T01:34:20.4460091Z             },
2026-06-22T01:34:20.4460167Z             {
2026-06-22T01:34:20.4460288Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4460378Z               "line": 683
2026-06-22T01:34:20.4460464Z             },
2026-06-22T01:34:20.4460545Z             {
2026-06-22T01:34:20.4460659Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4460745Z               "line": 885
2026-06-22T01:34:20.4460816Z             },
2026-06-22T01:34:20.4460909Z             {
2026-06-22T01:34:20.4461011Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4461103Z               "line": 9792
2026-06-22T01:34:20.4461180Z             }
2026-06-22T01:34:20.4461261Z           ]
2026-06-22T01:34:20.4461345Z         }
2026-06-22T01:34:20.4461430Z       }
2026-06-22T01:34:20.4461511Z     },
2026-06-22T01:34:20.4461597Z     {
2026-06-22T01:34:20.4461691Z       "id": "REQ-TERM-5",
2026-06-22T01:34:20.4463198Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-22T01:34:20.4463321Z       "requiredStages": [
2026-06-22T01:34:20.4463407Z         "doc",
2026-06-22T01:34:20.4463494Z         "impl",
2026-06-22T01:34:20.4463578Z         "unit",
2026-06-22T01:34:20.4463660Z         "int"
2026-06-22T01:34:20.4463737Z       ],
2026-06-22T01:34:20.4463818Z       "stages": {
2026-06-22T01:34:20.4463893Z         "doc": {
2026-06-22T01:34:20.4463988Z           "complete": true,
2026-06-22T01:34:20.4464073Z           "evidence": [
2026-06-22T01:34:20.4464173Z             {
2026-06-22T01:34:20.4464276Z               "path": "docs/MANIFEST.md",
2026-06-22T01:34:20.4464371Z               "line": 234
2026-06-22T01:34:20.4464453Z             }
2026-06-22T01:34:20.4464525Z           ]
2026-06-22T01:34:20.4464614Z         },
2026-06-22T01:34:20.4464691Z         "impl": {
2026-06-22T01:34:20.4464792Z           "complete": true,
2026-06-22T01:34:20.4464873Z           "evidence": [
2026-06-22T01:34:20.4464957Z             {
2026-06-22T01:34:20.4465078Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4465158Z               "line": 75
2026-06-22T01:34:20.4465244Z             },
2026-06-22T01:34:20.4465320Z             {
2026-06-22T01:34:20.4465426Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4465516Z               "line": 131
2026-06-22T01:34:20.4465597Z             },
2026-06-22T01:34:20.4465679Z             {
2026-06-22T01:34:20.4465779Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:34:20.4465979Z               "line": 22
2026-06-22T01:34:20.4466065Z             },
2026-06-22T01:34:20.4466245Z             {
2026-06-22T01:34:20.4466356Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:34:20.4466441Z               "line": 87
2026-06-22T01:34:20.4466527Z             },
2026-06-22T01:34:20.4466609Z             {
2026-06-22T01:34:20.4466723Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T01:34:20.4466807Z               "line": 30
2026-06-22T01:34:20.4466902Z             },
2026-06-22T01:34:20.4466988Z             {
2026-06-22T01:34:20.4467104Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4467198Z               "line": 103
2026-06-22T01:34:20.4467270Z             },
2026-06-22T01:34:20.4467351Z             {
2026-06-22T01:34:20.4467465Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4467551Z               "line": 167
2026-06-22T01:34:20.4467638Z             },
2026-06-22T01:34:20.4467718Z             {
2026-06-22T01:34:20.4467841Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4467928Z               "line": 434
2026-06-22T01:34:20.4468014Z             },
2026-06-22T01:34:20.4468099Z             {
2026-06-22T01:34:20.4468209Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4468301Z               "line": 5650
2026-06-22T01:34:20.4468385Z             },
2026-06-22T01:34:20.4468471Z             {
2026-06-22T01:34:20.4468577Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4468662Z               "line": 5957
2026-06-22T01:34:20.4468748Z             }
2026-06-22T01:34:20.4468834Z           ]
2026-06-22T01:34:20.4468921Z         },
2026-06-22T01:34:20.4469071Z         "int": {
2026-06-22T01:34:20.4469171Z           "complete": true,
2026-06-22T01:34:20.4469257Z           "evidence": [
2026-06-22T01:34:20.4469341Z             {
2026-06-22T01:34:20.4469488Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T01:34:20.4469589Z               "line": 17
2026-06-22T01:34:20.4469665Z             }
2026-06-22T01:34:20.4469760Z           ]
2026-06-22T01:34:20.4469846Z         },
2026-06-22T01:34:20.4469928Z         "unit": {
2026-06-22T01:34:20.4470022Z           "complete": true,
2026-06-22T01:34:20.4470112Z           "evidence": [
2026-06-22T01:34:20.4470195Z             {
2026-06-22T01:34:20.4470309Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4470389Z               "line": 375
2026-06-22T01:34:20.4470471Z             },
2026-06-22T01:34:20.4470557Z             {
2026-06-22T01:34:20.4470675Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:34:20.4470761Z               "line": 162
2026-06-22T01:34:20.4470839Z             },
2026-06-22T01:34:20.4470923Z             {
2026-06-22T01:34:20.4471038Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:34:20.4471130Z               "line": 179
2026-06-22T01:34:20.4471224Z             },
2026-06-22T01:34:20.4471305Z             {
2026-06-22T01:34:20.4471411Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:34:20.4471497Z               "line": 201
2026-06-22T01:34:20.4471576Z             },
2026-06-22T01:34:20.4471658Z             {
2026-06-22T01:34:20.4471769Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:34:20.4471858Z               "line": 212
2026-06-22T01:34:20.4471934Z             },
2026-06-22T01:34:20.4472023Z             {
2026-06-22T01:34:20.4472124Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:34:20.4472217Z               "line": 223
2026-06-22T01:34:20.4472293Z             },
2026-06-22T01:34:20.4472379Z             {
2026-06-22T01:34:20.4472499Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4472584Z               "line": 1525
2026-06-22T01:34:20.4472670Z             },
2026-06-22T01:34:20.4472752Z             {
2026-06-22T01:34:20.4472866Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4473058Z               "line": 1568
2026-06-22T01:34:20.4473143Z             },
2026-06-22T01:34:20.4473319Z             {
2026-06-22T01:34:20.4473443Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4473538Z               "line": 606
2026-06-22T01:34:20.4473624Z             },
2026-06-22T01:34:20.4473706Z             {
2026-06-22T01:34:20.4473819Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4473915Z               "line": 634
2026-06-22T01:34:20.4473997Z             },
2026-06-22T01:34:20.4474087Z             {
2026-06-22T01:34:20.4474201Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4474283Z               "line": 646
2026-06-22T01:34:20.4474364Z             },
2026-06-22T01:34:20.4474444Z             {
2026-06-22T01:34:20.4474557Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4474638Z               "line": 669
2026-06-22T01:34:20.4474728Z             },
2026-06-22T01:34:20.4474818Z             {
2026-06-22T01:34:20.4474931Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4475061Z               "line": 8503
2026-06-22T01:34:20.4475147Z             },
2026-06-22T01:34:20.4475232Z             {
2026-06-22T01:34:20.4475333Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4475433Z               "line": 8561
2026-06-22T01:34:20.4475517Z             }
2026-06-22T01:34:20.4475595Z           ]
2026-06-22T01:34:20.4475681Z         }
2026-06-22T01:34:20.4475757Z       }
2026-06-22T01:34:20.4475842Z     },
2026-06-22T01:34:20.4475925Z     {
2026-06-22T01:34:20.4476024Z       "id": "REQ-TERM-6",
2026-06-22T01:34:20.4477097Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-22T01:34:20.4477198Z       "requiredStages": [
2026-06-22T01:34:20.4477288Z         "impl",
2026-06-22T01:34:20.4477372Z         "unit",
2026-06-22T01:34:20.4477458Z         "int"
2026-06-22T01:34:20.4477539Z       ],
2026-06-22T01:34:20.4477626Z       "stages": {
2026-06-22T01:34:20.4477710Z         "doc": {
2026-06-22T01:34:20.4477791Z           "complete": false,
2026-06-22T01:34:20.4477878Z           "evidence": []
2026-06-22T01:34:20.4477959Z         },
2026-06-22T01:34:20.4478044Z         "impl": {
2026-06-22T01:34:20.4478130Z           "complete": true,
2026-06-22T01:34:20.4478222Z           "evidence": [
2026-06-22T01:34:20.4478308Z             {
2026-06-22T01:34:20.4478426Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4478512Z               "line": 132
2026-06-22T01:34:20.4478597Z             },
2026-06-22T01:34:20.4478674Z             {
2026-06-22T01:34:20.4478799Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4478889Z               "line": 187
2026-06-22T01:34:20.4479050Z             },
2026-06-22T01:34:20.4479132Z             {
2026-06-22T01:34:20.4479255Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4479341Z               "line": 17
2026-06-22T01:34:20.4479428Z             },
2026-06-22T01:34:20.4479505Z             {
2026-06-22T01:34:20.4479612Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4479707Z               "line": 104
2026-06-22T01:34:20.4479788Z             },
2026-06-22T01:34:20.4479869Z             {
2026-06-22T01:34:20.4479991Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4480077Z               "line": 319
2026-06-22T01:34:20.4480163Z             },
2026-06-22T01:34:20.4480244Z             {
2026-06-22T01:34:20.4480363Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4480573Z               "line": 396
2026-06-22T01:34:20.4480649Z             }
2026-06-22T01:34:20.4480731Z           ]
2026-06-22T01:34:20.4480892Z         },
2026-06-22T01:34:20.4480973Z         "int": {
2026-06-22T01:34:20.4481070Z           "complete": true,
2026-06-22T01:34:20.4481164Z           "evidence": [
2026-06-22T01:34:20.4481245Z             {
2026-06-22T01:34:20.4481394Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T01:34:20.4481474Z               "line": 18
2026-06-22T01:34:20.4481560Z             }
2026-06-22T01:34:20.4481651Z           ]
2026-06-22T01:34:20.4481733Z         },
2026-06-22T01:34:20.4481817Z         "unit": {
2026-06-22T01:34:20.4481898Z           "complete": true,
2026-06-22T01:34:20.4481985Z           "evidence": [
2026-06-22T01:34:20.4482067Z             {
2026-06-22T01:34:20.4482175Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4482261Z               "line": 135
2026-06-22T01:34:20.4482353Z             },
2026-06-22T01:34:20.4482437Z             {
2026-06-22T01:34:20.4482541Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4482641Z               "line": 150
2026-06-22T01:34:20.4482717Z             },
2026-06-22T01:34:20.4482801Z             {
2026-06-22T01:34:20.4482910Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4482992Z               "line": 166
2026-06-22T01:34:20.4483083Z             },
2026-06-22T01:34:20.4483168Z             {
2026-06-22T01:34:20.4483278Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:34:20.4483369Z               "line": 257
2026-06-22T01:34:20.4483454Z             },
2026-06-22T01:34:20.4486097Z             {
2026-06-22T01:34:20.4486255Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4486345Z               "line": 738
2026-06-22T01:34:20.4486421Z             },
2026-06-22T01:34:20.4486499Z             {
2026-06-22T01:34:20.4486631Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4486731Z               "line": 759
2026-06-22T01:34:20.4486819Z             },
2026-06-22T01:34:20.4486908Z             {
2026-06-22T01:34:20.4487032Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:34:20.4487129Z               "line": 726
2026-06-22T01:34:20.4487209Z             }
2026-06-22T01:34:20.4487289Z           ]
2026-06-22T01:34:20.4487370Z         }
2026-06-22T01:34:20.4487453Z       }
2026-06-22T01:34:20.4487528Z     },
2026-06-22T01:34:20.4487613Z     {
2026-06-22T01:34:20.4487695Z       "id": "REQ-TERM-7",
2026-06-22T01:34:20.4488829Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-22T01:34:20.4488933Z       "requiredStages": [
2026-06-22T01:34:20.4489106Z         "impl",
2026-06-22T01:34:20.4489191Z         "unit",
2026-06-22T01:34:20.4489267Z         "int"
2026-06-22T01:34:20.4489349Z       ],
2026-06-22T01:34:20.4489435Z       "stages": {
2026-06-22T01:34:20.4489520Z         "doc": {
2026-06-22T01:34:20.4489605Z           "complete": false,
2026-06-22T01:34:20.4489693Z           "evidence": []
2026-06-22T01:34:20.4489778Z         },
2026-06-22T01:34:20.4489868Z         "impl": {
2026-06-22T01:34:20.4489954Z           "complete": true,
2026-06-22T01:34:20.4490051Z           "evidence": [
2026-06-22T01:34:20.4490125Z             {
2026-06-22T01:34:20.4490253Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4490334Z               "line": 133
2026-06-22T01:34:20.4490420Z             },
2026-06-22T01:34:20.4490494Z             {
2026-06-22T01:34:20.4490598Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4490818Z               "line": 326
2026-06-22T01:34:20.4490909Z             },
2026-06-22T01:34:20.4491071Z             {
2026-06-22T01:34:20.4491190Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:34:20.4491272Z               "line": 15
2026-06-22T01:34:20.4491363Z             },
2026-06-22T01:34:20.4491443Z             {
2026-06-22T01:34:20.4491552Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:34:20.4491639Z               "line": 32
2026-06-22T01:34:20.4491724Z             },
2026-06-22T01:34:20.4491805Z             {
2026-06-22T01:34:20.4491925Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:34:20.4492020Z               "line": 49
2026-06-22T01:34:20.4492092Z             },
2026-06-22T01:34:20.4492172Z             {
2026-06-22T01:34:20.4492283Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4492363Z               "line": 286
2026-06-22T01:34:20.4492449Z             },
2026-06-22T01:34:20.4492531Z             {
2026-06-22T01:34:20.4492650Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4492745Z               "line": 320
2026-06-22T01:34:20.4492826Z             }
2026-06-22T01:34:20.4492903Z           ]
2026-06-22T01:34:20.4492988Z         },
2026-06-22T01:34:20.4493111Z         "int": {
2026-06-22T01:34:20.4493192Z           "complete": true,
2026-06-22T01:34:20.4493282Z           "evidence": [
2026-06-22T01:34:20.4493357Z             {
2026-06-22T01:34:20.4493547Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T01:34:20.4493629Z               "line": 19
2026-06-22T01:34:20.4493714Z             }
2026-06-22T01:34:20.4493790Z           ]
2026-06-22T01:34:20.4493863Z         },
2026-06-22T01:34:20.4493953Z         "unit": {
2026-06-22T01:34:20.4494047Z           "complete": true,
2026-06-22T01:34:20.4494139Z           "evidence": [
2026-06-22T01:34:20.4494211Z             {
2026-06-22T01:34:20.4494329Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4494473Z               "line": 455
2026-06-22T01:34:20.4494563Z             },
2026-06-22T01:34:20.4494653Z             {
2026-06-22T01:34:20.4494763Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:34:20.4494846Z               "line": 568
2026-06-22T01:34:20.4494925Z             },
2026-06-22T01:34:20.4495006Z             {
2026-06-22T01:34:20.4495122Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:34:20.4495207Z               "line": 58
2026-06-22T01:34:20.4495297Z             },
2026-06-22T01:34:20.4495378Z             {
2026-06-22T01:34:20.4495494Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:34:20.4495583Z               "line": 77
2026-06-22T01:34:20.4495672Z             },
2026-06-22T01:34:20.4495753Z             {
2026-06-22T01:34:20.4495862Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:34:20.4495942Z               "line": 87
2026-06-22T01:34:20.4496027Z             },
2026-06-22T01:34:20.4496114Z             {
2026-06-22T01:34:20.4496224Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:34:20.4496323Z               "line": 94
2026-06-22T01:34:20.4496410Z             },
2026-06-22T01:34:20.4496491Z             {
2026-06-22T01:34:20.4496605Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4496691Z               "line": 691
2026-06-22T01:34:20.4496768Z             },
2026-06-22T01:34:20.4496849Z             {
2026-06-22T01:34:20.4496962Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:34:20.4497050Z               "line": 716
2026-06-22T01:34:20.4497135Z             }
2026-06-22T01:34:20.4497220Z           ]
2026-06-22T01:34:20.4497296Z         }
2026-06-22T01:34:20.4497379Z       }
2026-06-22T01:34:20.4497464Z     },
2026-06-22T01:34:20.4497545Z     {
2026-06-22T01:34:20.4497635Z       "id": "REQ-UPD-1",
2026-06-22T01:34:20.4497741Z       "title": "Peer-propagated update over P2P",
2026-06-22T01:34:20.4497917Z       "requiredStages": [
2026-06-22T01:34:20.4498028Z         "impl",
2026-06-22T01:34:20.4498193Z         "unit",
2026-06-22T01:34:20.4498270Z         "int"
2026-06-22T01:34:20.4498361Z       ],
2026-06-22T01:34:20.4498441Z       "stages": {
2026-06-22T01:34:20.4498516Z         "doc": {
2026-06-22T01:34:20.4498616Z           "complete": false,
2026-06-22T01:34:20.4498693Z           "evidence": []
2026-06-22T01:34:20.4498784Z         },
2026-06-22T01:34:20.4498864Z         "impl": {
2026-06-22T01:34:20.4499027Z           "complete": true,
2026-06-22T01:34:20.4499113Z           "evidence": [
2026-06-22T01:34:20.4499197Z             {
2026-06-22T01:34:20.4499327Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4499413Z               "line": 28
2026-06-22T01:34:20.4499498Z             },
2026-06-22T01:34:20.4499579Z             {
2026-06-22T01:34:20.4499699Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4499785Z               "line": 103
2026-06-22T01:34:20.4499865Z             },
2026-06-22T01:34:20.4499948Z             {
2026-06-22T01:34:20.4500056Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4500137Z               "line": 342
2026-06-22T01:34:20.4500219Z             },
2026-06-22T01:34:20.4500300Z             {
2026-06-22T01:34:20.4500413Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4500500Z               "line": 22
2026-06-22T01:34:20.4500577Z             },
2026-06-22T01:34:20.4500658Z             {
2026-06-22T01:34:20.4500770Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4500856Z               "line": 207
2026-06-22T01:34:20.4500947Z             },
2026-06-22T01:34:20.4501036Z             {
2026-06-22T01:34:20.4501135Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4501221Z               "line": 283
2026-06-22T01:34:20.4501298Z             },
2026-06-22T01:34:20.4501379Z             {
2026-06-22T01:34:20.4501488Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4501585Z               "line": 340
2026-06-22T01:34:20.4501670Z             },
2026-06-22T01:34:20.4501750Z             {
2026-06-22T01:34:20.4501870Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:34:20.4501955Z               "line": 37
2026-06-22T01:34:20.4502041Z             }
2026-06-22T01:34:20.4502122Z           ]
2026-06-22T01:34:20.4502209Z         },
2026-06-22T01:34:20.4502299Z         "int": {
2026-06-22T01:34:20.4502398Z           "complete": true,
2026-06-22T01:34:20.4502486Z           "evidence": [
2026-06-22T01:34:20.4502566Z             {
2026-06-22T01:34:20.4502694Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:34:20.4502776Z               "line": 207
2026-06-22T01:34:20.4502863Z             },
2026-06-22T01:34:20.4502942Z             {
2026-06-22T01:34:20.4503057Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:34:20.4503158Z               "line": 1082
2026-06-22T01:34:20.4503238Z             }
2026-06-22T01:34:20.4503315Z           ]
2026-06-22T01:34:20.4503401Z         },
2026-06-22T01:34:20.4503483Z         "unit": {
2026-06-22T01:34:20.4503581Z           "complete": true,
2026-06-22T01:34:20.4503666Z           "evidence": [
2026-06-22T01:34:20.4503752Z             {
2026-06-22T01:34:20.4503870Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4503955Z               "line": 490
2026-06-22T01:34:20.4504040Z             },
2026-06-22T01:34:20.4504122Z             {
2026-06-22T01:34:20.4504237Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4504326Z               "line": 616
2026-06-22T01:34:20.4504403Z             },
2026-06-22T01:34:20.4504489Z             {
2026-06-22T01:34:20.4504617Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:34:20.4504709Z               "line": 277
2026-06-22T01:34:20.4504890Z             },
2026-06-22T01:34:20.4504975Z             {
2026-06-22T01:34:20.4505086Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:34:20.4505275Z               "line": 124
2026-06-22T01:34:20.4505357Z             },
2026-06-22T01:34:20.4505443Z             {
2026-06-22T01:34:20.4505561Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:34:20.4505643Z               "line": 200
2026-06-22T01:34:20.4505730Z             }
2026-06-22T01:34:20.4505804Z           ]
2026-06-22T01:34:20.4505895Z         }
2026-06-22T01:34:20.4505978Z       }
2026-06-22T01:34:20.4506068Z     },
2026-06-22T01:34:20.4506152Z     {
2026-06-22T01:34:20.4506237Z       "id": "REQ-UPD-2",
2026-06-22T01:34:20.4506386Z       "title": "All binaries signature-verified before handoff",
2026-06-22T01:34:20.4506478Z       "requiredStages": [
2026-06-22T01:34:20.4506573Z         "impl",
2026-06-22T01:34:20.4506650Z         "unit"
2026-06-22T01:34:20.4506727Z       ],
2026-06-22T01:34:20.4506817Z       "stages": {
2026-06-22T01:34:20.4506898Z         "doc": {
2026-06-22T01:34:20.4506985Z           "complete": false,
2026-06-22T01:34:20.4507075Z           "evidence": []
2026-06-22T01:34:20.4507155Z         },
2026-06-22T01:34:20.4507246Z         "impl": {
2026-06-22T01:34:20.4507342Z           "complete": true,
2026-06-22T01:34:20.4507432Z           "evidence": [
2026-06-22T01:34:20.4507513Z             {
2026-06-22T01:34:20.4507638Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4507728Z               "line": 343
2026-06-22T01:34:20.4507808Z             },
2026-06-22T01:34:20.4507885Z             {
2026-06-22T01:34:20.4508014Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4508100Z               "line": 476
2026-06-22T01:34:20.4508181Z             },
2026-06-22T01:34:20.4508263Z             {
2026-06-22T01:34:20.4508371Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4508452Z               "line": 29
2026-06-22T01:34:20.4508539Z             },
2026-06-22T01:34:20.4508621Z             {
2026-06-22T01:34:20.4508734Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4508820Z               "line": 271
2026-06-22T01:34:20.4508907Z             },
2026-06-22T01:34:20.4509048Z             {
2026-06-22T01:34:20.4509157Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4509239Z               "line": 288
2026-06-22T01:34:20.4509325Z             },
2026-06-22T01:34:20.4509415Z             {
2026-06-22T01:34:20.4509520Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4509606Z               "line": 408
2026-06-22T01:34:20.4509691Z             },
2026-06-22T01:34:20.4509772Z             {
2026-06-22T01:34:20.4509883Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4509968Z               "line": 558
2026-06-22T01:34:20.4510054Z             },
2026-06-22T01:34:20.4510140Z             {
2026-06-22T01:34:20.4510264Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4510345Z               "line": 155
2026-06-22T01:34:20.4510430Z             }
2026-06-22T01:34:20.4510508Z           ]
2026-06-22T01:34:20.4510597Z         },
2026-06-22T01:34:20.4510674Z         "int": {
2026-06-22T01:34:20.4510765Z           "complete": false,
2026-06-22T01:34:20.4510851Z           "evidence": []
2026-06-22T01:34:20.4510931Z         },
2026-06-22T01:34:20.4511017Z         "unit": {
2026-06-22T01:34:20.4511108Z           "complete": true,
2026-06-22T01:34:20.4511189Z           "evidence": [
2026-06-22T01:34:20.4511269Z             {
2026-06-22T01:34:20.4511374Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4511460Z               "line": 750
2026-06-22T01:34:20.4511544Z             },
2026-06-22T01:34:20.4511624Z             {
2026-06-22T01:34:20.4511738Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4511825Z               "line": 811
2026-06-22T01:34:20.4512024Z             },
2026-06-22T01:34:20.4512097Z             {
2026-06-22T01:34:20.4512211Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4512387Z               "line": 825
2026-06-22T01:34:20.4512469Z             },
2026-06-22T01:34:20.4512559Z             {
2026-06-22T01:34:20.4512668Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4512750Z               "line": 841
2026-06-22T01:34:20.4512826Z             },
2026-06-22T01:34:20.4512897Z             {
2026-06-22T01:34:20.4513011Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4513103Z               "line": 932
2026-06-22T01:34:20.4513183Z             },
2026-06-22T01:34:20.4513264Z             {
2026-06-22T01:34:20.4513375Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4513460Z               "line": 414
2026-06-22T01:34:20.4513541Z             },
2026-06-22T01:34:20.4513607Z             {
2026-06-22T01:34:20.4513718Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4513812Z               "line": 427
2026-06-22T01:34:20.4513903Z             },
2026-06-22T01:34:20.4513985Z             {
2026-06-22T01:34:20.4514113Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:34:20.4514202Z               "line": 410
2026-06-22T01:34:20.4514288Z             }
2026-06-22T01:34:20.4514369Z           ]
2026-06-22T01:34:20.4514454Z         }
2026-06-22T01:34:20.4514538Z       }
2026-06-22T01:34:20.4514620Z     },
2026-06-22T01:34:20.4514707Z     {
2026-06-22T01:34:20.4514797Z       "id": "REQ-UPD-3",
2026-06-22T01:34:20.4514954Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-22T01:34:20.4515049Z       "requiredStages": [
2026-06-22T01:34:20.4515135Z         "impl",
2026-06-22T01:34:20.4515215Z         "unit",
2026-06-22T01:34:20.4515302Z         "int"
2026-06-22T01:34:20.4515383Z       ],
2026-06-22T01:34:20.4515469Z       "stages": {
2026-06-22T01:34:20.4515559Z         "doc": {
2026-06-22T01:34:20.4515655Z           "complete": false,
2026-06-22T01:34:20.4515740Z           "evidence": []
2026-06-22T01:34:20.4515831Z         },
2026-06-22T01:34:20.4515913Z         "impl": {
2026-06-22T01:34:20.4516004Z           "complete": true,
2026-06-22T01:34:20.4516098Z           "evidence": [
2026-06-22T01:34:20.4516179Z             {
2026-06-22T01:34:20.4516309Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4516398Z               "line": 40
2026-06-22T01:34:20.4516484Z             },
2026-06-22T01:34:20.4516566Z             {
2026-06-22T01:34:20.4516689Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4516807Z               "line": 87
2026-06-22T01:34:20.4516903Z             },
2026-06-22T01:34:20.4516992Z             {
2026-06-22T01:34:20.4517110Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.4517201Z               "line": 1136
2026-06-22T01:34:20.4517287Z             },
2026-06-22T01:34:20.4517372Z             {
2026-06-22T01:34:20.4517487Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4517578Z               "line": 2128
2026-06-22T01:34:20.4517669Z             },
2026-06-22T01:34:20.4517758Z             {
2026-06-22T01:34:20.4517874Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4517964Z               "line": 26
2026-06-22T01:34:20.4518049Z             },
2026-06-22T01:34:20.4518131Z             {
2026-06-22T01:34:20.4518241Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4518340Z               "line": 114
2026-06-22T01:34:20.4518426Z             },
2026-06-22T01:34:20.4518509Z             {
2026-06-22T01:34:20.4518622Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4518707Z               "line": 246
2026-06-22T01:34:20.4518794Z             },
2026-06-22T01:34:20.4518880Z             {
2026-06-22T01:34:20.4519046Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4519260Z               "line": 2442
2026-06-22T01:34:20.4519342Z             }
2026-06-22T01:34:20.4519533Z           ]
2026-06-22T01:34:20.4519613Z         },
2026-06-22T01:34:20.4519698Z         "int": {
2026-06-22T01:34:20.4519789Z           "complete": true,
2026-06-22T01:34:20.4519880Z           "evidence": [
2026-06-22T01:34:20.4519965Z             {
2026-06-22T01:34:20.4520085Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T01:34:20.4520176Z               "line": 58
2026-06-22T01:34:20.4520256Z             }
2026-06-22T01:34:20.4520341Z           ]
2026-06-22T01:34:20.4520420Z         },
2026-06-22T01:34:20.4520500Z         "unit": {
2026-06-22T01:34:20.4520594Z           "complete": true,
2026-06-22T01:34:20.4520676Z           "evidence": [
2026-06-22T01:34:20.4520763Z             {
2026-06-22T01:34:20.4520872Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4520967Z               "line": 532
2026-06-22T01:34:20.4521049Z             },
2026-06-22T01:34:20.4521139Z             {
2026-06-22T01:34:20.4521262Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4521349Z               "line": 585
2026-06-22T01:34:20.4521434Z             },
2026-06-22T01:34:20.4521505Z             {
2026-06-22T01:34:20.4521625Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4521708Z               "line": 653
2026-06-22T01:34:20.4521783Z             },
2026-06-22T01:34:20.4521867Z             {
2026-06-22T01:34:20.4521981Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:34:20.4522072Z               "line": 1102
2026-06-22T01:34:20.4522156Z             },
2026-06-22T01:34:20.4522236Z             {
2026-06-22T01:34:20.4522356Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4522438Z               "line": 271
2026-06-22T01:34:20.4522523Z             },
2026-06-22T01:34:20.4522604Z             {
2026-06-22T01:34:20.4522714Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4522809Z               "line": 295
2026-06-22T01:34:20.4522884Z             },
2026-06-22T01:34:20.4522977Z             {
2026-06-22T01:34:20.4523090Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4523176Z               "line": 316
2026-06-22T01:34:20.4523252Z             },
2026-06-22T01:34:20.4523329Z             {
2026-06-22T01:34:20.4523438Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4523519Z               "line": 332
2026-06-22T01:34:20.4523606Z             }
2026-06-22T01:34:20.4523686Z           ]
2026-06-22T01:34:20.4523772Z         }
2026-06-22T01:34:20.4523852Z       }
2026-06-22T01:34:20.4523936Z     },
2026-06-22T01:34:20.4524020Z     {
2026-06-22T01:34:20.4524106Z       "id": "REQ-UPD-4",
2026-06-22T01:34:20.4524283Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-22T01:34:20.4524377Z       "requiredStages": [
2026-06-22T01:34:20.4524477Z         "impl",
2026-06-22T01:34:20.4524555Z         "unit"
2026-06-22T01:34:20.4524631Z       ],
2026-06-22T01:34:20.4524716Z       "stages": {
2026-06-22T01:34:20.4524796Z         "doc": {
2026-06-22T01:34:20.4524887Z           "complete": false,
2026-06-22T01:34:20.4524967Z           "evidence": []
2026-06-22T01:34:20.4525052Z         },
2026-06-22T01:34:20.4525137Z         "impl": {
2026-06-22T01:34:20.4525223Z           "complete": true,
2026-06-22T01:34:20.4525309Z           "evidence": [
2026-06-22T01:34:20.4525399Z             {
2026-06-22T01:34:20.4525519Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4525601Z               "line": 41
2026-06-22T01:34:20.4525686Z             },
2026-06-22T01:34:20.4525771Z             {
2026-06-22T01:34:20.4525891Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4525977Z               "line": 88
2026-06-22T01:34:20.4526066Z             },
2026-06-22T01:34:20.4526158Z             {
2026-06-22T01:34:20.4526353Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:34:20.4526439Z               "line": 23
2026-06-22T01:34:20.4526592Z             },
2026-06-22T01:34:20.4526677Z             {
2026-06-22T01:34:20.4526783Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:34:20.4526874Z               "line": 56
2026-06-22T01:34:20.4526953Z             },
2026-06-22T01:34:20.4527035Z             {
2026-06-22T01:34:20.4527150Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:34:20.4527236Z               "line": 77
2026-06-22T01:34:20.4527325Z             },
2026-06-22T01:34:20.4527405Z             {
2026-06-22T01:34:20.4527515Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:34:20.4527604Z               "line": 236
2026-06-22T01:34:20.4527684Z             },
2026-06-22T01:34:20.4527766Z             {
2026-06-22T01:34:20.4527877Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:34:20.4527956Z               "line": 108
2026-06-22T01:34:20.4528042Z             },
2026-06-22T01:34:20.4528129Z             {
2026-06-22T01:34:20.4528248Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.4528333Z               "line": 270
2026-06-22T01:34:20.4528415Z             },
2026-06-22T01:34:20.4528500Z             {
2026-06-22T01:34:20.4528609Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4528691Z               "line": 2441
2026-06-22T01:34:20.4528782Z             }
2026-06-22T01:34:20.4528877Z           ]
2026-06-22T01:34:20.4529030Z         },
2026-06-22T01:34:20.4529116Z         "int": {
2026-06-22T01:34:20.4529206Z           "complete": false,
2026-06-22T01:34:20.4529292Z           "evidence": []
2026-06-22T01:34:20.4529378Z         },
2026-06-22T01:34:20.4529459Z         "unit": {
2026-06-22T01:34:20.4529549Z           "complete": true,
2026-06-22T01:34:20.4529645Z           "evidence": [
2026-06-22T01:34:20.4529732Z             {
2026-06-22T01:34:20.4529844Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4529950Z               "line": 581
2026-06-22T01:34:20.4530042Z             },
2026-06-22T01:34:20.4530131Z             {
2026-06-22T01:34:20.4530249Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4530325Z               "line": 706
2026-06-22T01:34:20.4530417Z             },
2026-06-22T01:34:20.4530497Z             {
2026-06-22T01:34:20.4530621Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:34:20.4530712Z               "line": 384
2026-06-22T01:34:20.4530798Z             },
2026-06-22T01:34:20.4530883Z             {
2026-06-22T01:34:20.4530999Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:34:20.4531089Z               "line": 102
2026-06-22T01:34:20.4531174Z             },
2026-06-22T01:34:20.4531260Z             {
2026-06-22T01:34:20.4531374Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:34:20.4531455Z               "line": 123
2026-06-22T01:34:20.4531541Z             },
2026-06-22T01:34:20.4531628Z             {
2026-06-22T01:34:20.4531737Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:34:20.4531832Z               "line": 142
2026-06-22T01:34:20.4531914Z             },
2026-06-22T01:34:20.4531995Z             {
2026-06-22T01:34:20.4532094Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:34:20.4532185Z               "line": 582
2026-06-22T01:34:20.4532258Z             },
2026-06-22T01:34:20.4532343Z             {
2026-06-22T01:34:20.4532446Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:34:20.4532541Z               "line": 566
2026-06-22T01:34:20.4532627Z             },
2026-06-22T01:34:20.4532711Z             {
2026-06-22T01:34:20.4532815Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4532902Z               "line": 8256
2026-06-22T01:34:20.4532988Z             }
2026-06-22T01:34:20.4533059Z           ]
2026-06-22T01:34:20.4533149Z         }
2026-06-22T01:34:20.4533340Z       }
2026-06-22T01:34:20.4533421Z     },
2026-06-22T01:34:20.4533512Z     {
2026-06-22T01:34:20.4533712Z       "id": "REQ-UPD-5",
2026-06-22T01:34:20.4533856Z       "title": "spt-core ripple-updates registered adapters",
2026-06-22T01:34:20.4533951Z       "requiredStages": [
2026-06-22T01:34:20.4534036Z         "impl",
2026-06-22T01:34:20.4534122Z         "unit"
2026-06-22T01:34:20.4534200Z       ],
2026-06-22T01:34:20.4534289Z       "stages": {
2026-06-22T01:34:20.4534375Z         "doc": {
2026-06-22T01:34:20.4534471Z           "complete": false,
2026-06-22T01:34:20.4534547Z           "evidence": []
2026-06-22T01:34:20.4534632Z         },
2026-06-22T01:34:20.4534718Z         "impl": {
2026-06-22T01:34:20.4534805Z           "complete": true,
2026-06-22T01:34:20.4534890Z           "evidence": [
2026-06-22T01:34:20.4534971Z             {
2026-06-22T01:34:20.4535100Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4535182Z               "line": 27
2026-06-22T01:34:20.4535266Z             },
2026-06-22T01:34:20.4535346Z             {
2026-06-22T01:34:20.4535471Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4535564Z               "line": 87
2026-06-22T01:34:20.4535645Z             },
2026-06-22T01:34:20.4535730Z             {
2026-06-22T01:34:20.4535855Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4535950Z               "line": 145
2026-06-22T01:34:20.4536026Z             },
2026-06-22T01:34:20.4536108Z             {
2026-06-22T01:34:20.4536222Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4536316Z               "line": 492
2026-06-22T01:34:20.4536399Z             },
2026-06-22T01:34:20.4536484Z             {
2026-06-22T01:34:20.4536603Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4536689Z               "line": 546
2026-06-22T01:34:20.4536766Z             }
2026-06-22T01:34:20.4536856Z           ]
2026-06-22T01:34:20.4536942Z         },
2026-06-22T01:34:20.4537023Z         "int": {
2026-06-22T01:34:20.4537114Z           "complete": false,
2026-06-22T01:34:20.4537218Z           "evidence": []
2026-06-22T01:34:20.4537304Z         },
2026-06-22T01:34:20.4537386Z         "unit": {
2026-06-22T01:34:20.4537481Z           "complete": true,
2026-06-22T01:34:20.4537567Z           "evidence": [
2026-06-22T01:34:20.4537653Z             {
2026-06-22T01:34:20.4537777Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4537870Z               "line": 272
2026-06-22T01:34:20.4537956Z             },
2026-06-22T01:34:20.4538037Z             {
2026-06-22T01:34:20.4538169Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4538249Z               "line": 286
2026-06-22T01:34:20.4538331Z             },
2026-06-22T01:34:20.4538398Z             {
2026-06-22T01:34:20.4538516Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4538602Z               "line": 300
2026-06-22T01:34:20.4538689Z             },
2026-06-22T01:34:20.4538775Z             {
2026-06-22T01:34:20.4538912Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4539070Z               "line": 314
2026-06-22T01:34:20.4539160Z             },
2026-06-22T01:34:20.4539241Z             {
2026-06-22T01:34:20.4539366Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4539452Z               "line": 348
2026-06-22T01:34:20.4539542Z             },
2026-06-22T01:34:20.4539624Z             {
2026-06-22T01:34:20.4539757Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4539852Z               "line": 1071
2026-06-22T01:34:20.4539924Z             }
2026-06-22T01:34:20.4540000Z           ]
2026-06-22T01:34:20.4540085Z         }
2026-06-22T01:34:20.4540171Z       }
2026-06-22T01:34:20.4540249Z     },
2026-06-22T01:34:20.4540334Z     {
2026-06-22T01:34:20.4540429Z       "id": "REQ-UPD-6",
2026-06-22T01:34:20.4541335Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-22T01:34:20.4541530Z       "requiredStages": [
2026-06-22T01:34:20.4541610Z         "doc",
2026-06-22T01:34:20.4541705Z         "impl",
2026-06-22T01:34:20.4541786Z         "unit",
2026-06-22T01:34:20.4541873Z         "int"
2026-06-22T01:34:20.4541958Z       ],
2026-06-22T01:34:20.4542043Z       "stages": {
2026-06-22T01:34:20.4542130Z         "doc": {
2026-06-22T01:34:20.4542212Z           "complete": true,
2026-06-22T01:34:20.4542306Z           "evidence": [
2026-06-22T01:34:20.4542378Z             {
2026-06-22T01:34:20.4542513Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T01:34:20.4542592Z               "line": 3
2026-06-22T01:34:20.4542678Z             },
2026-06-22T01:34:20.4542764Z             {
2026-06-22T01:34:20.4542875Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-22T01:34:20.4542959Z               "line": 3
2026-06-22T01:34:20.4543044Z             },
2026-06-22T01:34:20.4543130Z             {
2026-06-22T01:34:20.4543290Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-22T01:34:20.4543380Z               "line": 3
2026-06-22T01:34:20.4543467Z             }
2026-06-22T01:34:20.4543553Z           ]
2026-06-22T01:34:20.4543643Z         },
2026-06-22T01:34:20.4543729Z         "impl": {
2026-06-22T01:34:20.4543815Z           "complete": true,
2026-06-22T01:34:20.4543905Z           "evidence": [
2026-06-22T01:34:20.4543991Z             {
2026-06-22T01:34:20.4544116Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4544201Z               "line": 76
2026-06-22T01:34:20.4544286Z             },
2026-06-22T01:34:20.4544368Z             {
2026-06-22T01:34:20.4544487Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4544587Z               "line": 212
2026-06-22T01:34:20.4544668Z             },
2026-06-22T01:34:20.4544755Z             {
2026-06-22T01:34:20.4544864Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4544959Z               "line": 69
2026-06-22T01:34:20.4545046Z             },
2026-06-22T01:34:20.4545131Z             {
2026-06-22T01:34:20.4545254Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4545337Z               "line": 133
2026-06-22T01:34:20.4545422Z             },
2026-06-22T01:34:20.4545502Z             {
2026-06-22T01:34:20.4545622Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4545709Z               "line": 243
2026-06-22T01:34:20.4545789Z             },
2026-06-22T01:34:20.4545874Z             {
2026-06-22T01:34:20.4545992Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4546082Z               "line": 406
2026-06-22T01:34:20.4546172Z             },
2026-06-22T01:34:20.4546257Z             {
2026-06-22T01:34:20.4546377Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4546472Z               "line": 534
2026-06-22T01:34:20.4546557Z             },
2026-06-22T01:34:20.4546634Z             {
2026-06-22T01:34:20.4546754Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4546829Z               "line": 548
2026-06-22T01:34:20.4546910Z             },
2026-06-22T01:34:20.4546997Z             {
2026-06-22T01:34:20.4547107Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4547196Z               "line": 603
2026-06-22T01:34:20.4547278Z             },
2026-06-22T01:34:20.4547359Z             {
2026-06-22T01:34:20.4547473Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4547564Z               "line": 634
2026-06-22T01:34:20.4547650Z             },
2026-06-22T01:34:20.4547731Z             {
2026-06-22T01:34:20.4547937Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T01:34:20.4548022Z               "line": 137
2026-06-22T01:34:20.4548179Z             },
2026-06-22T01:34:20.4548266Z             {
2026-06-22T01:34:20.4548388Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T01:34:20.4548469Z               "line": 184
2026-06-22T01:34:20.4548554Z             },
2026-06-22T01:34:20.4548645Z             {
2026-06-22T01:34:20.4548753Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4548848Z               "line": 78
2026-06-22T01:34:20.4548929Z             },
2026-06-22T01:34:20.4549091Z             {
2026-06-22T01:34:20.4549206Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4549292Z               "line": 114
2026-06-22T01:34:20.4549382Z             },
2026-06-22T01:34:20.4552022Z             {
2026-06-22T01:34:20.4552171Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4552261Z               "line": 185
2026-06-22T01:34:20.4552361Z             },
2026-06-22T01:34:20.4552443Z             {
2026-06-22T01:34:20.4552576Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4552671Z               "line": 260
2026-06-22T01:34:20.4552748Z             },
2026-06-22T01:34:20.4552824Z             {
2026-06-22T01:34:20.4552947Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4553030Z               "line": 292
2026-06-22T01:34:20.4553120Z             },
2026-06-22T01:34:20.4553200Z             {
2026-06-22T01:34:20.4553306Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4553392Z               "line": 323
2026-06-22T01:34:20.4553477Z             },
2026-06-22T01:34:20.4553562Z             {
2026-06-22T01:34:20.4553676Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4553767Z               "line": 346
2026-06-22T01:34:20.4553850Z             },
2026-06-22T01:34:20.4553931Z             {
2026-06-22T01:34:20.4554056Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4554142Z               "line": 388
2026-06-22T01:34:20.4554227Z             },
2026-06-22T01:34:20.4554308Z             {
2026-06-22T01:34:20.4554418Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4554508Z               "line": 398
2026-06-22T01:34:20.4554589Z             },
2026-06-22T01:34:20.4554671Z             {
2026-06-22T01:34:20.4554781Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4554865Z               "line": 410
2026-06-22T01:34:20.4554948Z             },
2026-06-22T01:34:20.4555029Z             {
2026-06-22T01:34:20.4555133Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4555214Z               "line": 420
2026-06-22T01:34:20.4555296Z             },
2026-06-22T01:34:20.4555381Z             {
2026-06-22T01:34:20.4555485Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4555577Z               "line": 439
2026-06-22T01:34:20.4555663Z             },
2026-06-22T01:34:20.4555738Z             {
2026-06-22T01:34:20.4555853Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4555940Z               "line": 449
2026-06-22T01:34:20.4556025Z             },
2026-06-22T01:34:20.4556110Z             {
2026-06-22T01:34:20.4556226Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4556312Z               "line": 94
2026-06-22T01:34:20.4556396Z             },
2026-06-22T01:34:20.4556481Z             {
2026-06-22T01:34:20.4556601Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4556685Z               "line": 120
2026-06-22T01:34:20.4556765Z             },
2026-06-22T01:34:20.4556836Z             {
2026-06-22T01:34:20.4556947Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4557023Z               "line": 135
2026-06-22T01:34:20.4557108Z             },
2026-06-22T01:34:20.4557328Z             {
2026-06-22T01:34:20.4557437Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4557619Z               "line": 162
2026-06-22T01:34:20.4557704Z             },
2026-06-22T01:34:20.4557790Z             {
2026-06-22T01:34:20.4557896Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4557981Z               "line": 174
2026-06-22T01:34:20.4558062Z             },
2026-06-22T01:34:20.4558148Z             {
2026-06-22T01:34:20.4558262Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4558348Z               "line": 185
2026-06-22T01:34:20.4558429Z             },
2026-06-22T01:34:20.4558516Z             {
2026-06-22T01:34:20.4558624Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4558720Z               "line": 451
2026-06-22T01:34:20.4558802Z             },
2026-06-22T01:34:20.4558883Z             {
2026-06-22T01:34:20.4559071Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4559172Z               "line": 573
2026-06-22T01:34:20.4559251Z             },
2026-06-22T01:34:20.4559341Z             {
2026-06-22T01:34:20.4559461Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4559542Z               "line": 171
2026-06-22T01:34:20.4559628Z             },
2026-06-22T01:34:20.4559708Z             {
2026-06-22T01:34:20.4559824Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:34:20.4559905Z               "line": 65
2026-06-22T01:34:20.4559989Z             },
2026-06-22T01:34:20.4560076Z             {
2026-06-22T01:34:20.4560181Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:34:20.4560266Z               "line": 71
2026-06-22T01:34:20.4560342Z             },
2026-06-22T01:34:20.4560429Z             {
2026-06-22T01:34:20.4560534Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:34:20.4560614Z               "line": 77
2026-06-22T01:34:20.4560700Z             },
2026-06-22T01:34:20.4560782Z             {
2026-06-22T01:34:20.4560891Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4560977Z               "line": 778
2026-06-22T01:34:20.4561059Z             },
2026-06-22T01:34:20.4561139Z             {
2026-06-22T01:34:20.4561244Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4561321Z               "line": 795
2026-06-22T01:34:20.4561407Z             },
2026-06-22T01:34:20.4561491Z             {
2026-06-22T01:34:20.4561597Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4561679Z               "line": 838
2026-06-22T01:34:20.4561760Z             },
2026-06-22T01:34:20.4561834Z             {
2026-06-22T01:34:20.4561929Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4562016Z               "line": 981
2026-06-22T01:34:20.4562107Z             },
2026-06-22T01:34:20.4562182Z             {
2026-06-22T01:34:20.4562282Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4562369Z               "line": 1131
2026-06-22T01:34:20.4562450Z             }
2026-06-22T01:34:20.4562539Z           ]
2026-06-22T01:34:20.4562621Z         },
2026-06-22T01:34:20.4562708Z         "int": {
2026-06-22T01:34:20.4562789Z           "complete": true,
2026-06-22T01:34:20.4562873Z           "evidence": [
2026-06-22T01:34:20.4562955Z             {
2026-06-22T01:34:20.4563088Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:34:20.4563183Z               "line": 569
2026-06-22T01:34:20.4563265Z             },
2026-06-22T01:34:20.4563356Z             {
2026-06-22T01:34:20.4563470Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T01:34:20.4563556Z               "line": 135
2026-06-22T01:34:20.4563642Z             }
2026-06-22T01:34:20.4563718Z           ]
2026-06-22T01:34:20.4563799Z         },
2026-06-22T01:34:20.4563885Z         "unit": {
2026-06-22T01:34:20.4563976Z           "complete": true,
2026-06-22T01:34:20.4564056Z           "evidence": [
2026-06-22T01:34:20.4564251Z             {
2026-06-22T01:34:20.4564383Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4564577Z               "line": 626
2026-06-22T01:34:20.4564664Z             },
2026-06-22T01:34:20.4564744Z             {
2026-06-22T01:34:20.4564873Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4564950Z               "line": 675
2026-06-22T01:34:20.4565031Z             },
2026-06-22T01:34:20.4565106Z             {
2026-06-22T01:34:20.4565217Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:34:20.4565307Z               "line": 696
2026-06-22T01:34:20.4565392Z             },
2026-06-22T01:34:20.4565473Z             {
2026-06-22T01:34:20.4565584Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4565670Z               "line": 513
2026-06-22T01:34:20.4565740Z             },
2026-06-22T01:34:20.4565822Z             {
2026-06-22T01:34:20.4565941Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4566027Z               "line": 638
2026-06-22T01:34:20.4566113Z             },
2026-06-22T01:34:20.4566204Z             {
2026-06-22T01:34:20.4566312Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4566408Z               "line": 675
2026-06-22T01:34:20.4566485Z             },
2026-06-22T01:34:20.4566571Z             {
2026-06-22T01:34:20.4566675Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4566762Z               "line": 947
2026-06-22T01:34:20.4566839Z             },
2026-06-22T01:34:20.4566923Z             {
2026-06-22T01:34:20.4567037Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4567122Z               "line": 969
2026-06-22T01:34:20.4567199Z             },
2026-06-22T01:34:20.4567273Z             {
2026-06-22T01:34:20.4567391Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4567468Z               "line": 986
2026-06-22T01:34:20.4567550Z             },
2026-06-22T01:34:20.4567630Z             {
2026-06-22T01:34:20.4567745Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4567836Z               "line": 1001
2026-06-22T01:34:20.4567907Z             },
2026-06-22T01:34:20.4567997Z             {
2026-06-22T01:34:20.4568113Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4568193Z               "line": 1027
2026-06-22T01:34:20.4568278Z             },
2026-06-22T01:34:20.4568360Z             {
2026-06-22T01:34:20.4568475Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:34:20.4568560Z               "line": 457
2026-06-22T01:34:20.4568641Z             },
2026-06-22T01:34:20.4568728Z             {
2026-06-22T01:34:20.4568841Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:34:20.4568922Z               "line": 338
2026-06-22T01:34:20.4569095Z             },
2026-06-22T01:34:20.4569179Z             {
2026-06-22T01:34:20.4569280Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4569382Z               "line": 10549
2026-06-22T01:34:20.4569462Z             },
2026-06-22T01:34:20.4569551Z             {
2026-06-22T01:34:20.4569656Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4569742Z               "line": 1260
2026-06-22T01:34:20.4569830Z             },
2026-06-22T01:34:20.4569911Z             {
2026-06-22T01:34:20.4570031Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T01:34:20.4570112Z               "line": 130
2026-06-22T01:34:20.4570197Z             }
2026-06-22T01:34:20.4570278Z           ]
2026-06-22T01:34:20.4570355Z         }
2026-06-22T01:34:20.4570436Z       }
2026-06-22T01:34:20.4570516Z     },
2026-06-22T01:34:20.4570597Z     {
2026-06-22T01:34:20.4570689Z       "id": "REQ-UPD-7",
2026-06-22T01:34:20.4572828Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-22T01:34:20.4573142Z       "requiredStages": [
2026-06-22T01:34:20.4573225Z         "impl",
2026-06-22T01:34:20.4573306Z         "unit"
2026-06-22T01:34:20.4573386Z       ],
2026-06-22T01:34:20.4573467Z       "stages": {
2026-06-22T01:34:20.4573554Z         "doc": {
2026-06-22T01:34:20.4573648Z           "complete": false,
2026-06-22T01:34:20.4573739Z           "evidence": []
2026-06-22T01:34:20.4573825Z         },
2026-06-22T01:34:20.4573911Z         "impl": {
2026-06-22T01:34:20.4573996Z           "complete": true,
2026-06-22T01:34:20.4574096Z           "evidence": [
2026-06-22T01:34:20.4574179Z             {
2026-06-22T01:34:20.4574287Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4574383Z               "line": 2626
2026-06-22T01:34:20.4574464Z             }
2026-06-22T01:34:20.4574546Z           ]
2026-06-22T01:34:20.4574630Z         },
2026-06-22T01:34:20.4574711Z         "int": {
2026-06-22T01:34:20.4574806Z           "complete": false,
2026-06-22T01:34:20.4574891Z           "evidence": []
2026-06-22T01:34:20.4574971Z         },
2026-06-22T01:34:20.4575056Z         "unit": {
2026-06-22T01:34:20.4575147Z           "complete": true,
2026-06-22T01:34:20.4575234Z           "evidence": [
2026-06-22T01:34:20.4575318Z             {
2026-06-22T01:34:20.4575423Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4575510Z               "line": 10525
2026-06-22T01:34:20.4575591Z             }
2026-06-22T01:34:20.4575676Z           ]
2026-06-22T01:34:20.4575758Z         }
2026-06-22T01:34:20.4575849Z       }
2026-06-22T01:34:20.4575929Z     },
2026-06-22T01:34:20.4576005Z     {
2026-06-22T01:34:20.4576096Z       "id": "REQ-UPD-8",
2026-06-22T01:34:20.4578562Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-22T01:34:20.4578673Z       "requiredStages": [
2026-06-22T01:34:20.4578758Z         "impl",
2026-06-22T01:34:20.4578848Z         "unit"
2026-06-22T01:34:20.4578925Z       ],
2026-06-22T01:34:20.4579091Z       "stages": {
2026-06-22T01:34:20.4579182Z         "doc": {
2026-06-22T01:34:20.4579269Z           "complete": false,
2026-06-22T01:34:20.4579359Z           "evidence": []
2026-06-22T01:34:20.4579434Z         },
2026-06-22T01:34:20.4579521Z         "impl": {
2026-06-22T01:34:20.4579612Z           "complete": true,
2026-06-22T01:34:20.4579698Z           "evidence": [
2026-06-22T01:34:20.4579783Z             {
2026-06-22T01:34:20.4579908Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4580003Z               "line": 77
2026-06-22T01:34:20.4580088Z             },
2026-06-22T01:34:20.4580172Z             {
2026-06-22T01:34:20.4580292Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4580376Z               "line": 49
2026-06-22T01:34:20.4580566Z             },
2026-06-22T01:34:20.4580648Z             {
2026-06-22T01:34:20.4580776Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4580944Z               "line": 152
2026-06-22T01:34:20.4581029Z             },
2026-06-22T01:34:20.4581115Z             {
2026-06-22T01:34:20.4581235Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4581320Z               "line": 215
2026-06-22T01:34:20.4581405Z             },
2026-06-22T01:34:20.4581487Z             {
2026-06-22T01:34:20.4581606Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4581687Z               "line": 230
2026-06-22T01:34:20.4581773Z             },
2026-06-22T01:34:20.4581850Z             {
2026-06-22T01:34:20.4581959Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4582044Z               "line": 247
2026-06-22T01:34:20.4582131Z             },
2026-06-22T01:34:20.4582213Z             {
2026-06-22T01:34:20.4582326Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4582412Z               "line": 269
2026-06-22T01:34:20.4582504Z             },
2026-06-22T01:34:20.4582588Z             {
2026-06-22T01:34:20.4582693Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4582785Z               "line": 66
2026-06-22T01:34:20.4582870Z             },
2026-06-22T01:34:20.4582954Z             {
2026-06-22T01:34:20.4583063Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4583150Z               "line": 154
2026-06-22T01:34:20.4583232Z             },
2026-06-22T01:34:20.4583307Z             {
2026-06-22T01:34:20.4583417Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4583508Z               "line": 2430
2026-06-22T01:34:20.4583594Z             },
2026-06-22T01:34:20.4583679Z             {
2026-06-22T01:34:20.4583776Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4583861Z               "line": 2493
2026-06-22T01:34:20.4583951Z             },
2026-06-22T01:34:20.4584032Z             {
2026-06-22T01:34:20.4584137Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4584227Z               "line": 2503
2026-06-22T01:34:20.4584313Z             },
2026-06-22T01:34:20.4584385Z             {
2026-06-22T01:34:20.4584490Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4584576Z               "line": 2510
2026-06-22T01:34:20.4584656Z             },
2026-06-22T01:34:20.4584739Z             {
2026-06-22T01:34:20.4584843Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4584933Z               "line": 2627
2026-06-22T01:34:20.4585010Z             },
2026-06-22T01:34:20.4585096Z             {
2026-06-22T01:34:20.4585205Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4585290Z               "line": 480
2026-06-22T01:34:20.4585366Z             },
2026-06-22T01:34:20.4585442Z             {
2026-06-22T01:34:20.4585554Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:34:20.4585645Z               "line": 494
2026-06-22T01:34:20.4585731Z             }
2026-06-22T01:34:20.4585818Z           ]
2026-06-22T01:34:20.4585902Z         },
2026-06-22T01:34:20.4585988Z         "int": {
2026-06-22T01:34:20.4586080Z           "complete": false,
2026-06-22T01:34:20.4586165Z           "evidence": []
2026-06-22T01:34:20.4586250Z         },
2026-06-22T01:34:20.4586337Z         "unit": {
2026-06-22T01:34:20.4586432Z           "complete": true,
2026-06-22T01:34:20.4586513Z           "evidence": [
2026-06-22T01:34:20.4586594Z             {
2026-06-22T01:34:20.4586718Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:34:20.4586813Z               "line": 476
2026-06-22T01:34:20.4586894Z             },
2026-06-22T01:34:20.4586986Z             {
2026-06-22T01:34:20.4587104Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:34:20.4587194Z               "line": 580
2026-06-22T01:34:20.4587282Z             },
2026-06-22T01:34:20.4587362Z             {
2026-06-22T01:34:20.4587558Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4587644Z               "line": 10527
2026-06-22T01:34:20.4587796Z             },
2026-06-22T01:34:20.4587877Z             {
2026-06-22T01:34:20.4587983Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4588067Z               "line": 10549
2026-06-22T01:34:20.4588152Z             }
2026-06-22T01:34:20.4588238Z           ]
2026-06-22T01:34:20.4588319Z         }
2026-06-22T01:34:20.4588403Z       }
2026-06-22T01:34:20.4588483Z     },
2026-06-22T01:34:20.4588565Z     {
2026-06-22T01:34:20.4588651Z       "id": "REQ-UPD-9",
2026-06-22T01:34:20.4591256Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-22T01:34:20.4591379Z       "requiredStages": [
2026-06-22T01:34:20.4591456Z         "doc",
2026-06-22T01:34:20.4591537Z         "impl",
2026-06-22T01:34:20.4591622Z         "unit"
2026-06-22T01:34:20.4591703Z       ],
2026-06-22T01:34:20.4591781Z       "stages": {
2026-06-22T01:34:20.4591866Z         "doc": {
2026-06-22T01:34:20.4591965Z           "complete": true,
2026-06-22T01:34:20.4592057Z           "evidence": [
2026-06-22T01:34:20.4592134Z             {
2026-06-22T01:34:20.4592247Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4592342Z               "line": 93
2026-06-22T01:34:20.4592434Z             },
2026-06-22T01:34:20.4592523Z             {
2026-06-22T01:34:20.4592614Z               "path": "docs/MANIFEST.md",
2026-06-22T01:34:20.4592701Z               "line": 285
2026-06-22T01:34:20.4592778Z             }
2026-06-22T01:34:20.4592866Z           ]
2026-06-22T01:34:20.4592958Z         },
2026-06-22T01:34:20.4593044Z         "impl": {
2026-06-22T01:34:20.4593130Z           "complete": true,
2026-06-22T01:34:20.4593220Z           "evidence": [
2026-06-22T01:34:20.4593306Z             {
2026-06-22T01:34:20.4593440Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4593529Z               "line": 128
2026-06-22T01:34:20.4593614Z             },
2026-06-22T01:34:20.4593696Z             {
2026-06-22T01:34:20.4593815Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4593896Z               "line": 533
2026-06-22T01:34:20.4593987Z             },
2026-06-22T01:34:20.4594073Z             {
2026-06-22T01:34:20.4594196Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4594272Z               "line": 459
2026-06-22T01:34:20.4594355Z             },
2026-06-22T01:34:20.4594440Z             {
2026-06-22T01:34:20.4594549Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4594645Z               "line": 505
2026-06-22T01:34:20.4594726Z             },
2026-06-22T01:34:20.4594807Z             {
2026-06-22T01:34:20.4594926Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4595008Z               "line": 928
2026-06-22T01:34:20.4595102Z             },
2026-06-22T01:34:20.4595188Z             {
2026-06-22T01:34:20.4595314Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:34:20.4595412Z               "line": 302
2026-06-22T01:34:20.4595522Z             },
2026-06-22T01:34:20.4595609Z             {
2026-06-22T01:34:20.4595835Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4595936Z               "line": 5675
2026-06-22T01:34:20.4596115Z             },
2026-06-22T01:34:20.4596195Z             {
2026-06-22T01:34:20.4596306Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4596386Z               "line": 5720
2026-06-22T01:34:20.4596472Z             },
2026-06-22T01:34:20.4596553Z             {
2026-06-22T01:34:20.4596659Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4596744Z               "line": 5857
2026-06-22T01:34:20.4596834Z             },
2026-06-22T01:34:20.4596916Z             {
2026-06-22T01:34:20.4597021Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4597111Z               "line": 5878
2026-06-22T01:34:20.4597193Z             },
2026-06-22T01:34:20.4597278Z             {
2026-06-22T01:34:20.4597369Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4597459Z               "line": 5901
2026-06-22T01:34:20.4597546Z             },
2026-06-22T01:34:20.4597636Z             {
2026-06-22T01:34:20.4597736Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4597827Z               "line": 5928
2026-06-22T01:34:20.4597913Z             }
2026-06-22T01:34:20.4597998Z           ]
2026-06-22T01:34:20.4598083Z         },
2026-06-22T01:34:20.4598166Z         "int": {
2026-06-22T01:34:20.4598261Z           "complete": false,
2026-06-22T01:34:20.4598351Z           "evidence": []
2026-06-22T01:34:20.4598438Z         },
2026-06-22T01:34:20.4598519Z         "unit": {
2026-06-22T01:34:20.4598604Z           "complete": true,
2026-06-22T01:34:20.4598688Z           "evidence": [
2026-06-22T01:34:20.4598769Z             {
2026-06-22T01:34:20.4598902Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:34:20.4599038Z               "line": 259
2026-06-22T01:34:20.4599115Z             },
2026-06-22T01:34:20.4599197Z             {
2026-06-22T01:34:20.4599315Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:34:20.4599410Z               "line": 657
2026-06-22T01:34:20.4599493Z             },
2026-06-22T01:34:20.4599583Z             {
2026-06-22T01:34:20.4599696Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:34:20.4599783Z               "line": 1107
2026-06-22T01:34:20.4599869Z             },
2026-06-22T01:34:20.4599950Z             {
2026-06-22T01:34:20.4600059Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4600156Z               "line": 7565
2026-06-22T01:34:20.4600236Z             }
2026-06-22T01:34:20.4600321Z           ]
2026-06-22T01:34:20.4600404Z         }
2026-06-22T01:34:20.4600489Z       }
2026-06-22T01:34:20.4600569Z     },
2026-06-22T01:34:20.4600651Z     {
2026-06-22T01:34:20.4600771Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-22T01:34:20.4605953Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-22T01:34:20.4606320Z       "requiredStages": [
2026-06-22T01:34:20.4606410Z         "doc",
2026-06-22T01:34:20.4606486Z         "impl",
2026-06-22T01:34:20.4606576Z         "unit"
2026-06-22T01:34:20.4606656Z       ],
2026-06-22T01:34:20.4606741Z       "stages": {
2026-06-22T01:34:20.4606823Z         "doc": {
2026-06-22T01:34:20.4606919Z           "complete": true,
2026-06-22T01:34:20.4606999Z           "evidence": [
2026-06-22T01:34:20.4607104Z             {
2026-06-22T01:34:20.4607205Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4607304Z               "line": 342
2026-06-22T01:34:20.4607389Z             }
2026-06-22T01:34:20.4607463Z           ]
2026-06-22T01:34:20.4607543Z         },
2026-06-22T01:34:20.4607628Z         "impl": {
2026-06-22T01:34:20.4607724Z           "complete": true,
2026-06-22T01:34:20.4607815Z           "evidence": [
2026-06-22T01:34:20.4607896Z             {
2026-06-22T01:34:20.4608019Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:34:20.4608106Z               "line": 432
2026-06-22T01:34:20.4608191Z             },
2026-06-22T01:34:20.4608272Z             {
2026-06-22T01:34:20.4608387Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.4608473Z               "line": 683
2026-06-22T01:34:20.4608553Z             },
2026-06-22T01:34:20.4608630Z             {
2026-06-22T01:34:20.4608741Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.4608839Z               "line": 859
2026-06-22T01:34:20.4608930Z             },
2026-06-22T01:34:20.4609089Z             {
2026-06-22T01:34:20.4609202Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4609281Z               "line": 794
2026-06-22T01:34:20.4609373Z             },
2026-06-22T01:34:20.4609453Z             {
2026-06-22T01:34:20.4609566Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.4609651Z               "line": 788
2026-06-22T01:34:20.4609733Z             }
2026-06-22T01:34:20.4609819Z           ]
2026-06-22T01:34:20.4609899Z         },
2026-06-22T01:34:20.4609985Z         "int": {
2026-06-22T01:34:20.4610072Z           "complete": false,
2026-06-22T01:34:20.4610162Z           "evidence": []
2026-06-22T01:34:20.4610252Z         },
2026-06-22T01:34:20.4610339Z         "unit": {
2026-06-22T01:34:20.4610434Z           "complete": true,
2026-06-22T01:34:20.4610514Z           "evidence": [
2026-06-22T01:34:20.4610596Z             {
2026-06-22T01:34:20.4610711Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.4610811Z               "line": 1448
2026-06-22T01:34:20.4610896Z             },
2026-06-22T01:34:20.4610978Z             {
2026-06-22T01:34:20.4611087Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:34:20.4611173Z               "line": 1605
2026-06-22T01:34:20.4611254Z             },
2026-06-22T01:34:20.4611336Z             {
2026-06-22T01:34:20.4611444Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4611535Z               "line": 2588
2026-06-22T01:34:20.4611608Z             },
2026-06-22T01:34:20.4611693Z             {
2026-06-22T01:34:20.4611796Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:34:20.4611881Z               "line": 2655
2026-06-22T01:34:20.4611963Z             },
2026-06-22T01:34:20.4612052Z             {
2026-06-22T01:34:20.4612156Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:34:20.4612353Z               "line": 1002
2026-06-22T01:34:20.4612442Z             }
2026-06-22T01:34:20.4612528Z           ]
2026-06-22T01:34:20.4612696Z         }
2026-06-22T01:34:20.4612780Z       }
2026-06-22T01:34:20.4612862Z     },
2026-06-22T01:34:20.4612948Z     {
2026-06-22T01:34:20.4613039Z       "id": "REQ-WHOAMI-1",
2026-06-22T01:34:20.4614644Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-22T01:34:20.4614749Z       "requiredStages": [
2026-06-22T01:34:20.4614830Z         "doc",
2026-06-22T01:34:20.4614903Z         "impl",
2026-06-22T01:34:20.4614992Z         "unit"
2026-06-22T01:34:20.4615078Z       ],
2026-06-22T01:34:20.4615165Z       "stages": {
2026-06-22T01:34:20.4615256Z         "doc": {
2026-06-22T01:34:20.4615345Z           "complete": true,
2026-06-22T01:34:20.4615427Z           "evidence": [
2026-06-22T01:34:20.4615508Z             {
2026-06-22T01:34:20.4615599Z               "path": "CONTEXT.md",
2026-06-22T01:34:20.4615693Z               "line": 707
2026-06-22T01:34:20.4615765Z             }
2026-06-22T01:34:20.4615856Z           ]
2026-06-22T01:34:20.4615941Z         },
2026-06-22T01:34:20.4616027Z         "impl": {
2026-06-22T01:34:20.4616133Z           "complete": true,
2026-06-22T01:34:20.4616213Z           "evidence": [
2026-06-22T01:34:20.4616289Z             {
2026-06-22T01:34:20.4616400Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4616495Z               "line": 3190
2026-06-22T01:34:20.4616575Z             },
2026-06-22T01:34:20.4616661Z             {
2026-06-22T01:34:20.4616800Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4616928Z               "line": 3218
2026-06-22T01:34:20.4617023Z             }
2026-06-22T01:34:20.4617108Z           ]
2026-06-22T01:34:20.4617197Z         },
2026-06-22T01:34:20.4617282Z         "int": {
2026-06-22T01:34:20.4617368Z           "complete": false,
2026-06-22T01:34:20.4617455Z           "evidence": []
2026-06-22T01:34:20.4617530Z         },
2026-06-22T01:34:20.4617620Z         "unit": {
2026-06-22T01:34:20.4617702Z           "complete": true,
2026-06-22T01:34:20.4617788Z           "evidence": [
2026-06-22T01:34:20.4617864Z             {
2026-06-22T01:34:20.4617969Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4618060Z               "line": 7847
2026-06-22T01:34:20.4618146Z             },
2026-06-22T01:34:20.4618226Z             {
2026-06-22T01:34:20.4618328Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:34:20.4618422Z               "line": 7900
2026-06-22T01:34:20.4618503Z             }
2026-06-22T01:34:20.4618594Z           ]
2026-06-22T01:34:20.4618676Z         }
2026-06-22T01:34:20.4618756Z       }
2026-06-22T01:34:20.4618851Z     }
2026-06-22T01:34:20.4618928Z   ],
2026-06-22T01:34:20.4619128Z   "findings": []
2026-06-22T01:34:20.4619214Z }
